我已經創建了一個自定義UIView A嵌入到另一個自定義UIView B,因爲我想重用視圖。Xcode自定義UIView沒有正確顯示
(不能發佈超過2幅圖像,所以省略)
我使用的SWIFT代碼如下:
override init(frame: CGRect)
{
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
setupView()
}
private func setupView()
{
let view = viewFromNibForClass()
view.autoresizingMask = [
.flexibleWidth,
.flexibleHeight
]
view.frame = bounds
addSubview(view)
}
private func viewFromNibForClass() -> UIView
{
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
return view
}
當放置幾個的UIView A(在堆疊)插入的UIView B時,視圖會隨機跳到到超級視圖的左上方,有時超出視圖框架。我必須暫時將調整大小的蒙版更改爲:
view.autoresizingMask = [
.flexibleWidth,
.flexibleHeight,
.flexibleTopMargin,
.flexibleBottomMargin,
.flexibleLeftMargin,
.flexibleRightMargin
]
然後在進行調整後將其更改回來。但仍然,我無法應用任何簡單的約束,如高度或距離superview.leading沒有遇到多個衝突。
Custom UIView B containing several UIView A
要解決所有的衝突,我必須刪除所有的約束和繼續。然後,將UIView B放入我的主要故事板中的視圖控制器中,再次會導致視圖跳轉到某個奇怪的位置。我認爲這歸因於第一個查詢中列出的UIView A的異常行爲。
Generic view controller containing UIView B
感謝任何幫助或指針!