作者:Katty叮当_586 | 来源:互联网 | 2023-01-17 18:40
我使用水平滚动和自定义布局计算取决于UICollectionView的安全区域的itemSize.
但对于iPhone X安全区域,不同的方向有不同的大小.我的问题是如何在viewWillTransition函数中计算横向方向的安全区域大小?或者如果没有这个计算怎么办?
1> jonaszmclare..:
编辑
要在不创建任何其他视图的情况下获得安全区域大小,请使用:
view.safeAreaLayoutGuide.layoutFrame.size
如果你想使用viewWillTransition
方法,你可以使用这个:
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
// Before rotation
print(view.safeAreaLayoutGuide.layoutFrame.size)
coordinator.animate(alongsideTransition: { (context) in
// During rotation
}) { (context) in
// After rotation
print(self.view.safeAreaLayoutGuide.layoutFrame.size)
}
}
在完成块中,您将获得所需的大小,但请注意,此代码将在轮换后调用.
原始答案
使用其他UIView的解决方案:
我所做的是创建一个UIView
并用常量0固定到安全区域指南,以便它始终匹配安全区域的大小:
我创建了一个@IBOutlet
的是UIView
在viewDidLayoutSubviews()
检查大小:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
print(containerView.frame.size)
}
旋转后,我也得到了UIView的更新大小.