Как установить позиции и размер пользовательского XIB View в главном View Controller? - PullRequest
0 голосов
/ 28 мая 2018

Я создал пользовательский класс представления с помощью xib и загрузил этот класс UIView из XIB.Он показывает этот xib, но не устанавливает высоту и ширину с UIView в ViewController.swift.

Output

CustomView.swift

class CustomView: UIView {

    @IBOutlet weak var contentView: UIView!

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

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

    func setupView() {
        Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
        self.addSubview(contentView)
    }

}

CustomView.xib Image

ViewController.Swift

Class ViewController: UIViewController {
        @IBOutlet weak var view1: UIView!

        override func viewDidLoad() {
            super.viewDidLoad()

            let customView = CustomView()
            customView.frame = view1.frame
            view1.addSubview(customView)
        }
    }

ViewController Image

1 Ответ

0 голосов
/ 29 мая 2018

Я бы пошел сюда с немного другим подходом при инициализации пользовательского представления.Вот код:

CustomView:

class CustomView: UIView {

    @IBOutlet weak var contentView: UIView!

    class func instanceFromNibWithFrame(_ frame: CGRect) -> UIView {
        guard let view = UINib(nibName: "CustomView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as ?UIView else {
            fatalError("CustomView can't be init")
        }
    view.frame = frame
    return view
    }
}

ViewController:

class ViewController: UIViewController {
    @IBOutlet weak var view1: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let customView = CustomView.instanceFromNibWithFrame(view1.bounds)
        view1.addSubview(customView)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...