【问题标题】:UIView Animations Not Working Properly?UIView 动画无法正常工作?
【发布时间】: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)
  • 不要改变边界,几乎永远不要改变按钮。仅对帧(或约束常量)进行动画处理。

标签: ios objective-c uibutton swift uiviewanimation


【解决方案1】:

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

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

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

【讨论】:

  • 天啊,非常感谢!我遇到了类似的问题,我永远不会猜到自动布局是问题所在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-29
  • 2021-06-11
相关资源
最近更新 更多