Как программно разместить ограничения автоматического размещения внутри UIPageViewController? - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь отобразить содержимое в UIPageViewController, но мне пока не повезло. Мне удалось отобразить точки просмотра страницы, и цвет фона (чир) применяется правильно, но это все.

В моем коде у меня есть PageViewController, наследующий от UIPageViewController, и InPageViewController, наследующий от UIViewController какстраницы содержимого внутри родительского представления.

Внутри InPageViewController:

    private let labelView: UILabel = {
        let label = UILabel()
//        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Label"

        return label
    }()

    init(data: PageData) {
        super.init(nibName: nil, bundle: nil)
        labelView.text = data.dataName
        view.backgroundColor = .systemTeal
        view.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(labelView)

//        These are the constraints I am trying to set. Tried lots of different variations already 
//        NSLayoutConstraint.activate([
//            labelView.centerXAnchor.constraint(equalTo: view.layoutMarginsGuide.centerXAnchor),
//            labelView.centerYAnchor.constraint(equalTo: view.layoutMarginsGuide.centerYAnchor),
//        ])
    }

Это текущее состояние, отображаемое для отображения цвета фона, но не надписи. Всякий раз, когда я добавляю массив ограничений, фон исчезает и возвращается к своему стандартному серому цвету, который я установил в PageViewController.

    let dataArray = [PageData(dataName: "Data"), PageData(dataName: "Lore")]

    override func viewDidLoad() {
        super.viewDidLoad()
        setupView()
    }

    func setupView() {
        title = "A fistful of Datas"
    }

    lazy var arrayInPageViewController: [InPageViewController] = {
        var inPageVC = [InPageViewController]()
        for data in dataArray {
            inPageVC.append(InPageViewController(data: data))
        }
        return inPageVC
    }()

    override init(transitionStyle style: UIPageViewController.TransitionStyle, navigationOrientation: UIPageViewController.NavigationOrientation, options: [UIPageViewController.OptionsKey : Any]? = nil) {
        super.init(transitionStyle: .scroll, navigationOrientation: navigationOrientation, options: nil)

        self.dataSource = self
        self.delegate = self

        self.view.backgroundColor = .systemGray
        setViewControllers([arrayInPageViewController[0]], direction: .forward, animated: true, completion: nil)
        print(dataArray)
    }

Здесь я устанавливаю родительское представление. У меня также есть расширение, в котором я запускаю заглушки.

Я относительно новичок в программировании в целом, и у меня все еще возникают проблемы с пониманием логики автоматического размещения в Swift, поэтому любая помощь приветствуется.

1 Ответ

2 голосов
/ 16 октября 2019

Вам нужно установить labelView.translatesAutoresizingMaskIntoConstraints на false вместо view.translatesAutoresizingMaskIntoConstraints

...