UICollectionReusableView标题没有调整旋转 - 约束?

时间:2015-07-13 15:12:35

标签: ios swift uicollectionview nslayoutconstraint uicollectionreusableview

我在代码中有一个UICollectionReusableView用于UICollectionView Header Section,如下所示:

    
    var headingLabel: UILabel!
    override init(frame: CGRect) {
       super.init(frame: frame)
       headingLabel = UILabel(frame: CGRectMake(12.0,12.0,frame.width,21.0))
       headingLabel.numberOfLines = 1
       headingLabel.textAlignment = NSTextAlignment.Center
       headingLabel.textColor = UIColor.blackColor()
       self.backgroundColor = UIColor.whiteColor()
       self.addSubview(headingLabel)
    }

我只想让标题在显示屏中居中。只要我不旋转设备,这就没问题了。如果我旋转设备,则标签不再位于屏幕中央。

我猜这是非常简单的,我似乎无法找到答案。我的假设是我可以以编程方式添加约束,但我无法解决如何做到这一点。

或者,我认为可能有某种方法可以强制它在布局更改时重做标题,但我也无法正常工作。

任何指向正确方向的人都会非常感激。

Section Header Centered

After Rotation to Portrait

非常感谢。

2 个答案:

答案 0 :(得分:0)

在重新布局collectionView之前必须使布局无效(这发生在viewDidLayoutSubviews中),因此您必须在viewWillLayoutSubviews中使其无效。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    // Handle rotation
    collectionView.collectionViewLayout.invalidateLayout()
}

答案 1 :(得分:0)

[ERROR] Unknown life-cycle phase "specificdata".