问题:是否有可能获得旋转屏幕后将给出自动旋转UIView的大小,但是在旋转完成之前获取此值 ?如果是这样,怎么样?
背景:我正在构建一个iPad应用,其中有一个屏幕,其中多个UILabel排列在包含UIView的列中(小于屏幕的主要UIView。)标签的数量和编译时不知道每个标签中的文本长度。它们在运行时动态地在屏幕上布局,并使用一种算法,该算法尝试选择最佳的列数和宽度,以防止事物被屏幕截断。为了使重新调整过程对用户来说尽可能顺利,我相信我需要在内部做到这一点:
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
但是当然这个方法在旋转完成之前被调用,因此需要事先知道包含UIView的大小。
答案 0 :(得分:1)
在iOS 5中,viewWillLayoutSubviews
将实现您的目标。
在iOS 4中,你可以通过动画控件/子视图的移动来减少动作,即使它发生在didRotateFromInterfaceOrientation
中(我知道它听起来不像它,但它有很大的不同)。因此,如果您想要将按钮移动到newFrame的动画,它就像:
[UIView animateWithDuration:0.25 animations:^{
[button setFrame:newFrame];
}];
最后,明智地使用autoResizingMask
,也非常有帮助,尽管我认为这是不可能的,因为你是相互控制的。
答案 1 :(得分:0)
退房:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
您可以在此处找到所有这些方法: