从XIB加载自定义视图始终与堆栈视图中的框架保持相同

时间:2018-07-21 18:09:33

标签: ios swift uiview autolayout uistackview

我在xib中制作了一个自定义UIView,并加载为:

class func instanceFromNib() -> ExclusiveCollectionView {
    return UINib(nibName: "ExclusiveCollectionView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! ExclusiveCollectionView
}

自定义视图还具有一个子视图-UIcollection视图对象。 现在,当我尝试加载包含堆栈视图的父级时。 在父控制器中,viewWillAppear

    let customView  = ExclusiveCollectionView.instanceFromNib()
    myStackView.addArrangedSubview(customView)

自定义视图始终与矩形框一起保留。例如,对于iPhone 5s,xib中的框矩形宽度为320,那么在stackview视图中加载后,iPhone 8 Plus仍为320,而不是414。

iPhone 5S:

enter image description here

iPhone 8 Plus:

enter image description here

我知道这是一个普遍的问题,已经由SO冠军解决了。但是无论如何我都找不到有效的解决方案。我正在使用在iPhone 5S和iPhone 8 Plus中测试过的带有XCODE 9.0.1的Swift 4.1。

// Update:我尝试在更新viewDidLayoutSubview中的框架后进行添加,如许多SO答案中所给出的。但这不起作用。

我为相同的问题创建了一个gist,以使其更加清晰。

0 个答案:

没有答案