根据可用的Apple文档here,可以动画UIView的bounds
属性。动画UIView的边界属性
为了编程旋转自己的看法(在这种情况下,从纵向到横向)之一,我实现了下面的代码:
float w = controlsView.bounds.size.width;
float h = controlsView.bounds.size.height;
CGAffineTransform T = CGAffineTransformMakeRotation(M_PI/2);
UIViewContentMode oldContentMode = controlsView.contentMode;
controlsView.contentMode = UIViewContentModeRedraw;
[UIView animateWithDuration:1.0 animations:^{
controlsView.bounds = CGRectMake(0, 0, h, w);
controlsView.transform = T;
}];
controlsView.contentMode = oldContentMode;
我加了两条指令为contentMode
,因为我已经在计算器上的某个地方阅读必须将contentMode
设置为该值,以便UIView在修改bounds
属性时重绘内容(但在这种情况下,它不会以任何方式影响行为)。
该代码的问题是,UIView没有动画调整大小,但一次。
执行该代码,首先调整UIView的大小(没有动画),然后用动画旋转。
如何为调整大小设置动画效果?
- 更新 -
我试图缩放和旋转改造结合起来。 UIView在动画中旋转和缩放,但最后它的bounds
属性不会改变:即使它已经旋转到横向(我的iPhone应该是568x320),其宽度和高度仍然保持纵向值( 320x568)。事实上,controlsView
上的UI控件变形(错误的宽高比)并显得拉长。
为什么不使用缩放和旋转变换? – Wain