为了实现这一点,我创建了这个函数:
func collectionVIEw(collectionVIEw: UICollectionVIEw,layout collectionVIEwLayout: UICollectionVIEwLayout,sizeforItemAtIndexPath indexPath: NSIndexPath) -> CGSize { let size = collectionVIEw.frame.wIDth if (size > 500) { return CGSize(wIDth: (size/2) - 8,height: (size/2) - 8) } return CGSize(wIDth: size,height: size)}
这在第一次加载时按预期工作,但是当我旋转设备时,计算并不总是再次发生,并且视图并不总是按预期重绘.这是旋转设备时的代码:
overrIDe func willRotatetoInterfaceOrIEntation(toInterfaceOrIEntation: UIInterfaceOrIEntation,duration: NSTimeInterval) { collectionVIEw.collectionVIEwLayout.invalIDateLayout() self.vIEw.setNeedsdisplay()}
我假设我忘了重绘一些东西,但我不确定是什么.任何想法都非常感谢收到!
您可以使用vIEwWillLayoutSubvIEws. This question应该是有用的,但只要视图控制器视图要布局其子视图,就会以低音方式调用它.所以你的代码看起来像这样:
overrIDe func vIEwWillLayoutSubvIEws() { super.vIEwWillLayoutSubvIEws() guard let flowLayout = collectionVIEw.collectionVIEwLayout as? UICollectionVIEwFlowLayout else { return } if UIInterfaceOrIEntationIsLandscape(UIApplication.sharedApplication().statusbarOrIEntation) { //here you can do the logic for the cell size if phone is in landscape } else { //logic if not landscape } flowLayout.invalIDateLayout()}总结
以上是内存溢出为你收集整理的UICollectionView – 调整设备上的单元格旋转 – Swift全部内容,希望文章能够帮你解决UICollectionView – 调整设备上的单元格旋转 – Swift所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)