UICollectionView 宽度以编程方式与故事板初始化冲突

UICollectionView width programatically conflicting with storyboard initialization

我通过storyboard创建了一个UICollectionView,并临时定位在view中;但是,我想在启动时以编程方式覆盖这些位置,而不是使用故事板配置。

我认为 viewDidLoad() 是进行此更改的正确位置?

Swift2码:

override func viewDidLoad() {
    super.viewDidLoad()

    collectionView.dataSource = self
    collectionView.delegate = self
    collectionView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "collectionCell")
    collectionView.backgroundColor = UIColor(white:1, alpha:0.0)

    // Doesn't stretch the width to the device's width on launch. :-(
    collectionView.frame.size = CGSize(width: UIScreen.mainScreen().bounds.width, height: 200)        
}

如果您正在设置约束,然后想要更改 heightwidth,那么您应该使用那个高度或宽度的出口并增加它的常量值。只需按住 ctrl 并从宽度约束拖动到 class 并制作 outlate,然后在 viewdidload.

中增加该 outlate 的常数 属性

例如,

@IBOutlet weak var heightConstraint: NSLayoutConstraint!

self.heightConstraint.constant = 200

第二件事,如果您想让 collectionview 的高度与设备相同,则无需以编程方式进行设置。如果您设置了适当的约束,自动布局会管理它。所以要点是在任何地方使用自动布局或根本不使用。不要混合使用自动布局,然后以编程方式设置框架。

希望这会有所帮助:)