Контроллер дочернего вида и маржа - PullRequest
0 голосов
/ 13 октября 2018

У меня есть дочерний контроллер вида, как показано ниже.

import UIKit
class SampleChildViewController : UIViewController {

    let imageView : UIImageView = {
        let imageview = UIImageView()
        imageview.translatesAutoresizingMaskIntoConstraints = false
        imageview.clipsToBounds = true
        imageview.contentMode = .scaleAspectFit
        imageview.image = UIImage(named: "cat")
        return imageview
    }()


    override func viewDidLoad() {
        super.viewDidLoad()

        view.addSubview(imageView)

        NSLayoutConstraint.activate([
            imageView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8),
            imageView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 8),
            imageView.widthAnchor.constraint(equalToConstant: 150),
            imageView.heightAnchor.constraint(equalToConstant: 150)
            ])
    }


}

, тогда у меня есть родительский контроллер вида, как показано ниже.Я добавил дочерний контроллер представления в родительский контроллер представления, как показано ниже.

import UIKit

class ViewController: UIViewController {

    let child : SampleChildViewController = SampleChildViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = UIColor.white
        child.view.translatesAutoresizingMaskIntoConstraints = false
        addChild(child)
        view.addSubview(child.imageView)
        child.didMove(toParent: self)

    }


}

Теперь проблема в том, что у меня есть странная проблема с полем в родительском контроллере представления для представления изображения.Как вы можете видеть на скриншоте ниже, изображение скрыто за панелью навигации.Если я сделаю контроллер дочернего представления в качестве корневого контроллера представления и загрузлю приложение, то представление изображения будет расположено правильно.Как решить эту проблему?

enter image description here

1 Ответ

0 голосов
/ 13 октября 2018

Вы не предоставляете дочернему представлению ни фрейм, ни ограничения

child.view.translatesAutoresizingMaskIntoConstraints = false 

Также вы должны добавить представление не imageView

view.addSubview(child.view) 
NSLayoutConstraint.activate([
   child.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 8),
   child.view.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: 8),
   child.view.leftAnchor.constraint(equalTo: view.leftAnchor),
   child.view.rightAnchor.constraint(equalTo: view.rightAnchor),
])

и установить

navigationController?.navigationBar.prefersLargeTitles = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...