2016-11-25 20 views
0

我已經創建了自定義的UIView子類,應該作爲彈出對話框工作。我想要非常可重用,所以我在自己的xib文件中創建了我的子類,並在那裏設置了自動佈局約束。在界面生成器,它看起來是這樣的:通過接口生成器添加到控制器的xib自定義視圖 - 保持自動佈局約束,並通過它們調整大小

PhotoDetailInfoDialog.xib

應該通過文本的UITextView調整高度。這是我的自定義子類:

class PhotoDetailInfoDialog: UIView { 

    var view: UIView! 

    let nibName: String = "PhotoDetailInfoDialog" 

    @IBOutlet weak var titleLabel: UILabel! 
    @IBOutlet weak var mainTextView: UITextView! 
    @IBOutlet weak var bottomButton: UIButton! 

    override init(frame: CGRect) { 
    super.init(frame: frame) 
    setup() 
    } 

    required init?(coder aDecoder: NSCoder) { 
    super.init(coder: aDecoder) 
    setup() 
    } 

    func setup() { 
    view = loadViewFromNib() 

    view.frame = bounds 
    view.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight] 

    addSubview(view) 
    } 

    func loadViewFromNib() -> UIView { 
    let bundle = Bundle(for: type(of: self)) 
    let nib = UINib(nibName: nibName, bundle: bundle) 
    let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView 
    return view 
    } 
} 

在Interface Builder的控制器,我想使用它,我添加的視圖,並設置類我PhotoDetailInfoDialog。

Controller in interface builder with PhotoDetailInfoDialog

(服用後的屏幕截圖我加入寬度約束)。 如何設置它在自定義視圖的控制器高度中的權利會自動重新計算自定義xib中的約束(也許沒有界面生成器中的錯誤)?

在我來說,我的文字多行代碼爲UITextView的設置,但它顯示如下: How it looks like now when run

感謝您的幫助

回答

0

您可以將view的類未設置爲customView這已經有.xib哪個在你的storyboard

因爲在xib中,它已經爲PhotoDetailInfoDialog創建了interface

如果您將view拖動到storyboard並將類設置爲PhotoDetailInfoDialog,則會出現issue。並且你可以再次運行你的項目,它會崩潰EX_BAD_ACCESS

我建議你把你的PhotoDetailInfoDialog程序放在你的vc的代碼中。並可能更靈活地顯示dialog的條件或行動。

相關問題