获取正确的框架willRotateToInterfaceOrientation

时间:2011-09-11 08:30:25

标签: iphone layout rotation orientation autoresize

我的子视图在纵向和横向时具有不同的布局。 布局基于超视图的框架,并不是微不足道的(使用自动弹簧和支柱无法实现)。

问题在于,如果我在willRotateToInterfaceOrientation期间更改了子视图的框架,则动画是正确的,但框架是superView仍然是旧方向的框架。

如果我在didRotateFromInterfaceOrientation期间更改子视图,那么帧是superView确实是正确的,但帧更改只发生在旋转动画之后并且看起来不太好。

更改方向时更改子视图的帧的正确方法是什么?

2 个答案:

答案 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,

阿克沙伊