我尝试使用Xcode 6.3和一个新项目将Apple的CollectionView-Simple演示应用程序从Objective-C翻译成Swift 1.2。它运作不正常。具体而言,旋转设备时视图的大小不正确。它还具有纵向模式的尺寸问题,这些问题与iPhone 5和iPad 2不同。
我通过故事板寻找差异并找不到问题。我不知道要发布的相关代码是什么,所以我在GitHub上完成了所有内容:
https://github.com/DavidSteuber/CollViewSwift
有没有人看到问题以及如何解决?
答案 0 :(得分:0)
问题在于Storyboard中的autoresizingMask
。我用一个新的CollectionViewController替换了它,它按预期工作。查看两个视图控制器的源代码,只跳出了1个差异:
您的集合视图控制器:
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
新的集合视图控制器:
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
我不确定这是怎么发生的(也许你使用过旧的故事板?),但你可以用三种方法之一来修复它。
控制 - 点击 Project Navigator 中的Main.storyboard
并选择Open As->Source Code
。然后将flexibleMaxX
更改为widthSizable
并将flexibleMaxY
更改为heightSizable
。保存文件,然后 Control - 点击 Project Navigator 中的Main.storyboard
,然后选择Open As->Interface Builder - Storyboard
将其放回。
相反,您可以像我一样从头开始重新创建集合视图控制器。
最后,您还可以在代码中修复此问题。您可以将此方法添加到您的主ViewController
:
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView!.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
}