我的子视图在纵向和横向时具有不同的布局。 布局基于超视图的框架,并不是微不足道的(使用自动弹簧和支柱无法实现)。
问题在于,如果我在willRotateToInterfaceOrientation期间更改了子视图的框架,则动画是正确的,但框架是superView仍然是旧方向的框架。
如果我在didRotateFromInterfaceOrientation期间更改子视图,那么帧是superView确实是正确的,但帧更改只发生在旋转动画之后并且看起来不太好。
更改方向时更改子视图的帧的正确方法是什么?
答案 0 :(得分:4)
此功能适用于您所需的功能,因为视图框架已从旋转更改,并且不会停止自定义动画。
-(void)willAnimateRotationToInterfaceOrientation (UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
float width = UIInterfaceOrientationIsPortrait(toInterfaceOrientation) ? [[UIScreen mainScreen] applicationFrame].size.width : [[UIScreen mainScreen] applicationFrame].size.height;
//do something with the width now
//or you can get the height the same way
}
答案 1 :(得分:3)
我认为您可以尝试覆盖layoutSubviews
。在那里,您可以根据当前方向布置子视图,而不必担心将会/做RotateFromInterfaceOrientation。每次布置视图时都会调用layoutSubviews
。这将帮助您使用动画计时帧更改。
HTH,
阿克沙伊