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 动画无法正常工作?的主要内容,如果未能解决你的问题,请参考以下文章