【问题标题】:iOS8, how to know when UIView autorotation is complete?iOS8,如何知道UIView自转完成的时间?
【发布时间】:2015-04-13 23:44:30
【问题描述】:

我正在处理一个使用大小类和自动布局的故事板项目。但是,在代码中有几个实例,我在屏幕上添加了“老派”菜单和组件。这些组件被正确绘制,直到视图自动旋转。

我正在尝试解决在 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];
}

【问题讨论】:

    标签: objective-c iphone uiview ios8 autorotate


    【解决方案1】:

    该方法称为viewWillTransitionToSize:withTransitionCoordinator:。第二个参数是transition coordinator!它会告诉您轮换何时结束。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2011-04-05
      相关资源
      最近更新 更多