iOS9打破了UILabel的动画
我将代码从Swift 1.2迁移到Swift 2.0 在Swift 1.2/iOS8中,动画只起作用。但在iOS 9中,它不会设置动画,标签会立即更改位置,就好像从未调用过iOS9打破了UILabel的动画,ios,uiview,swift2,ios9,xcode7,Ios,Uiview,Swift2,Ios9,Xcode7,我将代码从Swift 1.2迁移到Swift 2.0 在Swift 1.2/iOS8中,动画只起作用。但在iOS 9中,它不会设置动画,标签会立即更改位置,就好像从未调用过layoutifneed 下面是我如何设置UILabel和UIButton的动画。(我使用的是自动布局,这就是为什么我使用layoutifneed) 使用UILABEL(不起作用) 使用UIBUTTON(有效) 但是,如果我在UIButton上执行相同的操作,它就会工作 有什么想法吗?为什么UILabel不可设置动画 尝试添加
layoutifneed
下面是我如何设置UILabel和UIButton的动画。(我使用的是自动布局,这就是为什么我使用layoutifneed)
使用UILABEL(不起作用)
使用UIBUTTON(有效)
但是,如果我在UIButton上执行相同的操作,它就会工作
有什么想法吗?为什么UILabel不可设置动画 尝试添加:
self.titleLabel.setNeedsLayout();
在动画块之前。通常,在更新视图上的约束时,应使用setNeedsLayout方法让iOS布局系统知道约束已更改。这是苹果公司的性能优化,这样他们就不会不必要地布局视图。至于为什么它对UIButton有效,我不能肯定。苹果可能在UIButton实现中调用了setNeedsLayout。
buttonTopConstraint.constant = 88;
UIView.animateWithDuration(0.8, delay: 0.38, usingSpringWithDamping: 0.54, initialSpringVelocity: 1, options: UIViewAnimationOptions.CurveLinear, animations: { () -> Void in
self.button.layoutIfNeeded();
}, completion: nil);
self.titleLabel.setNeedsLayout();