0

我有带有左右两个标签的 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
4

1 回答 1

0

您的约束将标题视图配置为尽可能小,同时仍显示标签。如果您希望标题视图更宽,则必须添加宽度约束使其更宽。标题视图无法以任何方式“看到”导航栏中的左右项;你只需要自己弄清楚宽度应该是多少,然后设置它。

这是一个例子;标题视图的宽度约束分别为 100 和 250。

在此处输入图像描述

在此处输入图像描述

所以例如第二个是

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
于 2020-06-17T15:39:50.227 回答