Помощь с быстрой версткой (просто для вас, не я, лол) - PullRequest
0 голосов
/ 30 апреля 2020

Привет, я учусь делать новостные ленты, и, хотя дела идут хорошо, мне нужна помощь с точки зрения макета самого канала. Канал закрепляется в безопасных зонах симулятора, но я хочу переместить верхнюю часть вниз примерно на половину экрана. Я сделал табличное представление, используя XIB и создал табличное представление программно. Как можно было бы сдвинуть верхнюю часть вниз? Вот код:

HomeViewScene = UITableView(frame: view.bounds, style: .plain)
    HomeViewScene.backgroundColor = Colors.white


    view.addsubview(tableview)



    let cellNib = UINib(nibName: "PosterCell", bundle: nil)
    HomeViewScene.register(cellNib, forCellReuseIdentifier: "postCell")


    var layoutguide:UILayoutGuide
    layoutguide = view.safeAreaLayoutGuide




    HomeViewScene.leadingAnchor.constraint(equalTo: layoutguide.leadingAnchor).isActive = true
    HomeViewScene.topAnchor.constraint(equalTo: layoutguide.topAnchor).isActive = true
    HomeViewScene.trailingAnchor.constraint(equalTo: layoutguide.trailingAnchor).isActive = true
    HomeViewScene.bottomAnchor.constraint(equalTo: layoutguide.bottomAnchor).isActive = true

What the simulator shows

What I want the top constraint to be attached to (that was done on word)

1 Ответ

0 голосов
/ 30 апреля 2020

Мне кажется, ты довольно близко. 2 основных момента, которые я бы предложил: 1) Вам нужно установить translatesAutoresizingMaskIntoConstraints в false, если вы хотите, чтобы ваши ограничения действительно вступили в силу. 2) Если вы хотите, чтобы ваше табличное представление отображалось в другом представлении, вам нужно установить верхний якорь вашего табличного представления равным нижнему якорю вашего другого представления.

В частности, именно так я бы изменил опубликованный вами код. Чтобы решить вашу проблему:

HomeViewScene = UITableView(frame: view.bounds, style: .plain)
    HomeViewScene.backgroundColor = Colors.white


    view.addsubview(tableview)



    let cellNib = UINib(nibName: "PosterCell", bundle: nil)
    HomeViewScene.register(cellNib, forCellReuseIdentifier: "postCell")


    var layoutguide:UILayoutGuide
    layoutguide = view.safeAreaLayoutGuide

    HomeViewScene.translatesAutoresizingMaskIntoConstraints = false //Add this line


    HomeViewScene.leadingAnchor.constraint(equalTo: layoutguide.leadingAnchor).isActive = true
    HomeViewScene.topAnchor.constraint(equalTo: otherView.topAnchor).isActive = true //You need to make sure the TOP of the table view is positioned right at the BOTTOM of the other view
    HomeViewScene.trailingAnchor.constraint(equalTo: layoutguide.trailingAnchor).isActive = true
    HomeViewScene.bottomAnchor.constraint(equalTo: layoutguide.bottomAnchor).isActive = true

Помните, что если вы программно изменяете ограничения для вида, вы должны установить для translatesAutoresizingMaskIntoConstraints значение false, иначе вы не увидите изменений в позиции этого вида.

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