iOS8,如何知道UIView自动旋转完成的时间?

时间:2015-04-13 15:32:04

标签: objective-c iphone uiview ios8 autorotate

我正在使用尺寸类和自动布局来处理故事板项目。但是,代码中有几个实例,我在这里添加了#34;旧学校"屏幕上的菜单和组件。正确绘制这些组件,直到视图自动旋转。

我试图修复在iOS8中以编程方式添加到UIView的控件的自动旋转问题。 如何确定UIView自动旋转何时完成且视图有新边界?

在旋转完成之前调用此方法,并且视图仍具有旧大小,并且子视图无法正确地重绘自身。我没有看到didTransition

的任何内容
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{

//this does not seem to work - uses old size instead of new one
    [introductionView setNeedsDisplay];

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}

1 个答案:

答案 0 :(得分:3)

该方法称为viewWillTransitionToSize:withTransitionCoordinator:。第二个参数是过渡协调员!它告诉你旋转何时结束。

这是我自己的代码中的典型结构(在Swift中,但我确信你可以在心理上翻译):

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
    coordinator.animateAlongsideTransition({
            _ in
            // ...
        }, completion: {
            _ in
            // ... now the transition is over! ...
        })
}