Установить ограничения программно файла XIB в Swift - PullRequest
0 голосов
/ 14 марта 2019

Как прикрепить XIB-файл к основанию Super View

У меня есть файл XIB с именем «xibFIleView»

enter image description here

Мой код для вызова XIB View: -

 override func viewDidLoad() {
        super.viewDidLoad()

       self.view.addSubview(instanceFromNib())
    }

    func instanceFromNib() -> xibFIleView {

        return UINib(nibName: "xibFileView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! xibFIleView
    }
}

Когда я запускаю Мой проект, мой Симулятор показывает: - enter image description here

Как мы можем прикрепить XIB-представление в нижней части супер-вида.

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Вы можете добиться этого, установив constraints или frame на xibView.

Установить ограничения:

override func viewDidLoad() {
    super.viewDidLoad()

    let xibView = instanceFromNib()
    self.view.addSubview(xibView)
    xibView.translatesAutoresizingMaskIntoConstraints = false
    let constraint_leading = NSLayoutConstraint(item: xibView, attribute: .leading, relatedBy: .equal, toItem: self.view, attribute: .leading, multiplier: 1, constant: 0)
    let constraint_bottom = NSLayoutConstraint(item: xibView, attribute: .bottom, relatedBy: .equal, toItem: self.view, attribute: .bottom, multiplier: 1, constant: 0)
    let constraint_height = NSLayoutConstraint(item: xibView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .height, multiplier: 1, constant: xibView.frame.height)
    let constraint_width = NSLayoutConstraint(item: xibView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .width, multiplier: 1, constant: xibView.frame.width)
    self.view.addConstraint(constraint_leading)
    self.view.addConstraint(constraint_bottom)
    xibView.addConstraint(constraint_height)
    xibView.addConstraint(constraint_width)
}

----- или -----

Установить кадр:

Внесите следующие изменения в viewDidLoad():

override func viewDidLoad() {
    super.viewDidLoad()

    let xibView = instanceFromNib()
    let y_pos = self.view.frame.height - xibView.frame.height
    xibView.frame = CGRect(x: 0, y: y_pos, width: xibView.frame.width, height: xibView.frame.height)
    // change x, y, width, height based on your requirement.
    self.view.addSubview(xibView)
}

Примечание: измените x, y положение и ширину, высоту в соответствии с вашими требованиями.

0 голосов
/ 14 марта 2019

Используйте автоматический макет, чтобы добавить 4 ограничения, достаточные для указания ширины, высоты, x и y подпредставлений. Например:

override func viewDidLoad() {
    super.viewDidLoad()

    let child = instanceFromNib()
    self.view.addSubview(child)
    NSLayoutConstraint.activate([
        child.bottomAnchor.constraint(equalTo: view.bottomAnchor),
        child.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        child.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        child.heightAnchor.constraint(equalToConstant: 300) // <- Your desired view height here
    )]
}

func instanceFromNib() -> xibFIleView {

    return UINib(nibName: "xibFileView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! xibFIleView
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...