как установить ведущее и конечное ограничение для xib, используемого как titleView - PullRequest
0 голосов
/ 17 июня 2020

У меня есть файл Xib с двумя ярлыками, левым и правым. слева 0 в начале и 0 в конце. между ограничением> = 15. Это представление используется как представление заголовка на панели навигации. Мой вопрос: как установить этот xib, чтобы левый ярлык был близок к leftItem, а правый - близко к rightItem?

как называется xib

headerVC = HeaderViewController(nibName: "HeaderViewController", bundle: nil)

как xib заполнено

    navigationItem.titleView = headerVC?.view
                headerVC?.lbl1.text = name
                headerVC?.lbl2.text = balance

//test purpose
                    //        headerVC?.backgroundColor = .red
                    //this try of mine not working
                    let leftWidth = self.navigationItem.leftBarButtonItem?.width ?? 0.0
        let rightWidth = self.navigationItem.rightBarButtonItem?.width ?? 0.0
        let sides = leftWidth + rightWidth
        let screenSize: CGRect = UIScreen.main.bounds
        let screenWidth = screenSize.width
//        NSLayoutConstraint.activate([
//            headerVC?.view.width = screenWidth - leftWidth - rightWidth
        headerVC?.view.widthAnchor.constraint(equalToConstant: screenWidth - sides).isActive = true
//        ])

решение, связанное с ответом ниже и с этим ответом

        headerVC?.backgroundColor = .red
        headerVC?.view.translatesAutoresizingMaskIntoConstraints = false
        let screenSize: CGRect = UIScreen.main.bounds
        let screenWidth = screenSize.width
        headerVC?.view.widthAnchor.constraint(equalToConstant: screenWidth * 0.75).isActive = true

1 Ответ

0 голосов
/ 17 июня 2020

Ваши ограничения настраивают вид заголовка, чтобы он был как можно меньше, но при этом все еще отображались ярлыки. Если вы хотите, чтобы заголовок был шире, вам нужно будет добавить ограничение ширины, чтобы сделать его шире. Представление заголовка никак не может «видеть» левый и правый элементы на панели навигации; вам просто нужно самому определить, какой должна быть ширина, и установить ее.

Вот пример; заголовок имеет ограничение ширины 100 и 250 соответственно.

enter image description here

enter image description here

Так, например, второй

let v = UIView()
v.backgroundColor = .red
v.translatesAutoresizingMaskIntoConstraints = false
v.widthAnchor.constraint(equalToConstant: 250).isActive = true
v.heightAnchor.constraint(equalToConstant: 20).isActive = true
self.navigationItem.titleView = v
...