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