自动版式约束更改不会设置动画

邦操作员

我正在从教程中学习带有动画的自动布局

http://weblog.sivecode.com/post/42362079291/auto-layout-and-core-animation-auto-layout-was

一切都进行得很顺利。

当我尝试在应用程序中使用此概念时,尝试从底部到顶部为设置屏幕(UIView)设置动画,当设置屏幕只是一个空的UIView时,它非常有用,

但是,如果我将UILabel作为子视图添加到此设置屏幕,则动画将消失。从设置屏幕删除此UILabel时,动画是可见的。

这是我连接的插座

__weak IBOutlet UIView *settingsView;
__weak IBOutlet NSLayoutConstraint *settingsBottomConstraint;
__weak IBOutlet NSLayoutConstraint *settingsViewHeightConstraint;

视图确实加载了设置方法(setupViews)

-(void)setupViews
{
    settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant;
    [settingsView setNeedsUpdateConstraints];
    [settingsView layoutIfNeeded];
    isSettingsHidden = YES;
}

隐藏/取消隐藏方法

- (IBAction)showSettingsScreen:(id)sender {

    if (isSettingsHidden) {

        settingsBottomConstraint.constant = 0;
        [settingsView setNeedsUpdateConstraints];
        [UIView animateWithDuration:.3 animations:^{
            [settingsView layoutIfNeeded];
        }];
    }
    else{

        settingsBottomConstraint.constant = - settingsViewHeightConstraint.constant;
        [settingsView setNeedsUpdateConstraints];
        [UIView animateWithDuration:0.3 animations:^{
            [settingsView layoutIfNeeded];
        }];

    }
    isSettingsHidden = !isSettingsHidden;
}

我的问题似乎与UIView自动版式动画问题类似

邦操作员

我找到了答案。

代替,

[settingsView layoutIfNeeded];

这条线使它像魅力一样运作,

[self.view layoutIfNeeded];

我想我们需要在父视图上执行layoutIfNeeded方法,而不仅是我们尝试制作动画的视图。

更新:正如codyko的评论中指出的那样,这对于iOS 7,iOS 10是必需的对于iOS 8,不存在此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

自动布局动画约束不会为子视图设置动画

表格视图底部约束不会设置动画/更改

如何为不同的屏幕尺寸设置不同的自动版式约束

尺寸更改时在哪里更新自动版式约束?

如何更改自动版式中的self.view约束?

更改自动版式常量不会更新其框架

动画自动布局`leftAnchor`约束更改

如何为约束更改设置动画?

useSpring不会为道具更改设置动画

在NSView上设置动画自动布局约束和Alpha

具有自动布局约束的UIView动画更改

如何为特定的xib设置自动版式?

UILabel大小更改不会与自动布局动画化

使用constraintEqualToAnchor()设置后如何更改自动布局约束?

AVPlayerViewController-无自动版式-无法同时满足约束。

自动版式:隐藏工具栏后重置底部约束

自动布局,约束和动画

iOS:自动版式:动画后锁定新位置

[iOS]:移除和添加约束时,自动布局动画更改帧位置

使用自动版式将UIWebView设置为其高度

使用自动版式将UIWebView设置为其高度

在运行时更改自动版式

在iOS中,自动调整大小,自动版式和约束之间有什么区别?

动画自动布局约束不起作用

UILabel不会在UIView内设置动画,使用了自动布局

使用约束动画 UIView 的图层(自动布局动画)

自动版式:无法同时满足约束。符号断点不显示错误消息

-(void)updateConstraints中的动画约束更改

更改链接动画中的UIView约束