Swift 4 - рамка UIView показывает неверный размер - PullRequest
0 голосов
/ 26 июня 2018

У меня есть один прозрачный UIView. Это представление называется " mainView "

Я хочу добавить подпредставление к mainView того же размера. Итак, я инициализирую его в самом классе mainView : https://i.stack.imgur.com/pz6Ql.png Это выглядит так: [https://i.stack.imgur.com/Y8MEr.png] И это именно то, что я хочу!

Но, допустим, я удалил этот код и хочу инициализировать подвид в моем UIViewController : https://i.stack.imgur.com/aCpWf.png Я создал выпуск mainView и инициализировал с помощью границы mainView и subView.

К сожалению, мой взгляд теперь выглядит так: https://i.stack.imgur.com/stekd.png Но вы можете видеть в приведенном выше коде, что я правильно установил фрейм на фреймы вида mainView.bounds

Можете ли вы объяснить, почему размер нового View (subView) не остается таким же, как когда я инициализировал его в mainView классе ?

1 Ответ

0 голосов
/ 26 июня 2018

Вам будет намного лучше, если вы научитесь использовать автоматическую компоновку.

override func viewDidLoad() {
    super.viewDidLoad()

    // create the view
    let newView = UIView()
    // we want to use auto-layout
    newView.translatesAutoresizingMaskIntoConstraints = false
    // set the view's background color
    newView.backgroundColor = .green

    // add the new view to the "main" view
    view.addSubview(newView)

    // constrain top / bottom / leading / trailing anchors
    newView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    newView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    newView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    newView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

    // the newView will now have the same frame as the "main" view, and its
    // frame will auto-adjust if the main view changes (such as on device rotate)
}
...