快速加载客户UIView xib autolayout有很多问题

时间:2016-09-04 10:10:31

标签: ios uiview

我创建了两个客户思想xib并添加了约束 如下:

UIView1

enter image description here

enter image description here

import UIKit

类TestSubView:UIView {

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

@IBOutlet var view: UIView!

override init(frame: CGRect) {
    super.init(frame: frame)
    loadViewFfromNib()
    setupSubviews()
}

func setupSubviews() {
    view = loadViewFfromNib()
    print("self.view.bounds")
    print(self.view.bounds)
    print("self.view.frame")
    print(self.view.frame)
    addSubview(view)
}

func loadViewFfromNib() -> UIView {
    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
    return view
}

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

override func layoutSubviews() {
    super.layoutSubviews()
    //this is for Rect drawer
    self.frame=CGRectMake(0, 0, 0, 0)
    print(self.view.bounds)
    print(self)
    print(self.frame)
    print(self.superview?.frame)
}

}

UIView2

enter image description here

enter image description here

import UIKit

class Test2SubView:UIView {

override func awakeFromNib() {
    super.awakeFromNib()
}

@IBOutlet var view: UIView!

override init(frame: CGRect) {
    super.init(frame: frame)
    loadViewFfromNib()
    setupSubviews()
}

func setupSubviews() {
    view = loadViewFfromNib()
    print(self.view.bounds)
    addSubview(view)
}

func loadViewFfromNib() -> UIView {
    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: String(self.dynamicType), bundle: bundle)
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
    return view
}

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

}

IN main.stroyboard

我添加一个带有约束的UIview来加载我的客户UIView

enter image description here

我将它加载到函数doxiblayoutTest

    func doxiblayoutTest(){
    let value="a"
    switch value {
    case "a":
         let v=TestSubView.init()
         v.frame.origin=xibLayoutTest.frame.origin
        xibLayoutTest.addSubview(v)
    case "b":
         let v=Test2SubView.init()
         xibLayoutTest.addSubview(v)
    default:
         let v=TestSubView.init()
         xibLayoutTest.addSubview(v)
    }
    print("xibLayoutTest.bounds")
    print(xibLayoutTest.bounds)
    print(xibLayoutTest.frame.size)
    print(xibLayoutTest.frame.origin)
}

结果

enter image description here

但是当我旋转屏幕时。它显示不正确。有谁可以帮助我!!!!

enter image description here

0 个答案:

没有答案