viewWillTransitionToSize

viewWillTransitionToSize

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

最佳答案

更新

如果您使用的是UICollectionView,则需要引起注意的是称为shouldInvalidateLayoutForBoundsChange:的UICollectionViewLayout方法。基本上,此方法称为更改集合视图的每次范围(而不是大小),并且如果回答“是”,则集合视图中继。

为了进行实验,您可以(例如通过将UICollectionViewFlowLayout子类化)重写此方法,如下所示:

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

如果可行,您可以尝试一些更有效的方法,仅在更改实际大小时才返回YES。像这样
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds
{
    BOOL should = !CGSizeEqualToSize(self.collectionView.frame.size, newBounds.size);
    return should;
}

这比使用viewWillTransitionToSize更自然

10-08 06:27