Swift viewWillTransitionToSize不使用分屏调用

时间:2015-12-07 21:51:08

标签: ios swift ipad viewwilltransitiontosize displaymode

我正在为iPad Air 2和iPad Mini 4实现分屏功能。我正在尝试检测分屏大小何时发生变化。作为主要应用程序运行时,viewWillTransitionToSizewillTransitionToTraitCollection将被执行。如果我的应用程序作为辅助应用程序运行,则在打开辅助应用程序时或在横向模式下调用viewWillTransitionToSize功能时,从屏幕的1/4更改为1/2。当我将辅助应用程序从屏幕的1/2改为1/4时,不会调用任何函数来帮助指示更改。是否应该有一个叫做的函数?

1 个答案:

答案 0 :(得分:2)

<强>更新

如果你正在使用UICollectionView,你需要引起对UICollectionViewLayout方法的注意,该方法被称为shouldInvalidateLayoutForBoundsChange:基本上,这个方法被调用,你的集合视图的每次边界(不是大小)都会被更改,如果你回答是您的收藏视图重新布局。

要进行实验,您可以(例如通过继承UICollectionViewFlowLayout)覆盖此方法,如下所示:

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    return YES;
}

如果它适用于您,可以尝试一些更有效的方法,仅在实际尺寸改变时返回YES。像这样的东西

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    BOOL should = !CGSizeEqualToSize(self.collectionView.frame.size, newBounds.size);
    return should;
}

比使用viewWillTransitionToSize

更自然