UIView 动画无法正常工作?

Posted

技术标签:

【中文标题】UIView 动画无法正常工作?【英文标题】:UIView Animations Not Working Properly? 【发布时间】:2014-07-18 06:45:01 【问题描述】:

我目前正在 Swift 中试验 UIView 动画。我试图将按钮的大小从 (309, 452, 0, 0) 调整为 (400, 400, 150, 150)。我有代码:

override func viewDidAppear(animated: Bool) 
    UIView.animateWithDuration(0.5, animations: 
        self.start.bounds = CGRectMake(400, 400, 150, 150)
        println(self.start.bounds);
    );


但是,按钮突然从无(无过渡)出现到 150x150 并一直过渡到左上角 (0,0)。即使打印语句在控制台中打印出 (309, 452, 150, 150),它也没有该帧。我也尝试将 self.start.bounds 更改为 self.start.frame,但这并没有什么不同。

【问题讨论】:

您是否使用按钮的自动布局? 不,我删除了所有的自动布局约束 如果您也在更改位置,那么您可能应该使用框架。我在您的问题中看到您已经尝试过,但您应该再次使用它。动画之前的帧是多少(即改变之前的模型值是多少)? 如果我尝试使用框架,它会变成 (0,0,0,0)。但是,当我使用边界并打印出框架和边界值时,控制台输出边界 (400.0,400.0,150.0,150.0) 和框架输出 (-75.0,-75.0,150.0,150.0) 不要改变边界,几乎永远不要改变按钮。仅对帧(或约束常量)进行动画处理。 【参考方案1】:

我认为问题在于自动布局。我已经开始了一个带有 ViewController 和开始按钮的新项目。当我尝试使用

更改viewDidLoad中的按钮框架时
UIView.animateWithDuration(1.0) 
            self.start.frame = CGRectMake(100, 500, 500, 50);
        

唯一发生的事情是按钮文本淡入。 当我为 View Controller 禁用 AutoLayout 或 SizeClasses 时,按钮的动画效果正确。

【讨论】:

天啊,非常感谢!我遇到了类似的问题,我永远不会猜到自动布局是问题所在。

以上是关于UIView 动画无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

UIView 动画在 UITableViewCell 内无法正常工作

具有原点的动画 UIView 无法正常工作

UIStackView 显示/隐藏动画无法正常工作

UIView 动画在 iOS 8 中不能正常工作?

UIView 动画隐藏和显示

swift 3 layoutIfneeded 无法正常工作