习惯了用 autosizing masks 来布局UI,感觉用起来又快又熟,但在支持多尺寸屏幕适配下,还是需要使用Autolayout(以及 iOS8 出来的sizeclass)。而为了用户体验,我们又经常用到Animation,如改变一个View的高度,常用方式是:
[UIView animateWithDuration:.5f
animations:^{
CGRect theFrame = _topView.frame;
theFrame.size.width -= 100;
worldView.frame = theFrame;
}];
_topView.translatesAutoresizingMaskIntoConstraints = YES;
然后在运行,动画达到效果,但是
在底部
All Output
窗口打印出以下信息:
原来在此情况下,不是通过改变frame,而是操作Constant来改变控件的尺寸位置,所以将目标View的Height Constraint 约束拖到.h或者.m文件中如下:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topViewHeightConstraint;
动画则变为:
_topViewHeightConstraint.constant -= 100;// Update constraints
[UIView animateWithDuration:.3
animations:^{
[self.view layoutIfNeeded];// Flush out frames
}];
本人也是最近才开始用
Autolayout(以及 iOS8 出来的sizeclass),初尝甜头感受到适配的便捷后,今天用到动画时,遇到此问题,简单笔记下,附上午休写的一个小Demo,加以了解!