ios - 使用 swift 设置 UiStackview 内 UiLabel 的高度

标签 ios swift xcode

我正在 UiStackview 中动态添加 View 。由于 UiStackview 不是常规 View ,所以我无法为其添加底部边框。这就是为什么我计划在其末尾添加一个 UILabel

我将在 UIStackview 末尾添加的标签将被视为边框。我想把它的高度设为1点。并给它一个背景颜色。并将其高度扩展到屏幕的整个宽度。

但是它的高度没有得到控制。谁能告诉我问题出在哪里?

这是小代码片段

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 10, height: 1))
            label.backgroundColor = UIColor.black
            label.text = ""


            bottomBorder.addArrangedSubview(label)

我将其添加到主堆栈 View 的末尾。它被添加到主堆栈 View 中,但我认为高度为 30 点。或者可能是 UiLabel 的默认高度

我的问题是:

  1. 如何在 stackview 末尾添加 UiLabel 或边框(垂直对齐)
  2. 有什么方法可以直接向我的 stackview 添加边框吗?四侧边框或至少底部边框?

最佳答案

您有 2 个替代方案来实现此目的:

1-将 stackview 放入 UIView parentView

enter image description here

2-不要将UILabel直接添加到UIStackView,将UILabel添加到UIView,然后添加UIViewUIStackView,这样您就可以将任何您想要的分隔符添加到 UIView 中。

执行此操作的代码:

override func viewDidLoad()
    {
        super.viewDidLoad()
        stackView.distribution = .fillEqually

        let v1 = getViewForStackView(lblText: "lbl1")
        let v2 = getViewForStackView(lblText: "lbl2")

        stackView.addArrangedSubview(v1)
        stackView.addArrangedSubview(v2)
    }


    func getViewForStackView(lblText:String)->UIView
    {
        let rectView = CGRect(x: 0, y: 0, width: 100, height: 100)
        let view = UIView(frame: rectView)
        view.backgroundColor = .green
        let label = UILabel()
        label.text = lblText
        label.backgroundColor = .red
        addFillingSubview(parentView: view, subview: label, insets: UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8))
        return view
    }

    func addFillingSubview(parentView:UIView, subview: UIView, insets: UIEdgeInsets = .zero)
    {
        subview.translatesAutoresizingMaskIntoConstraints = false
        parentView.addSubview(subview)

        let views = ["subview": subview]
        let metrics = ["top": insets.top, "left": insets.left, "bottom": insets.bottom, "right": insets.right]

        parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "|-(left)-[subview]-(right)-|", options: [], metrics: metrics, views: views))
        parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-(top)-[subview]-(bottom)-|", options: [], metrics: metrics, views: views))
    }

输出:

enter image description here

关于ios - 使用 swift 设置 UiStackview 内 UiLabel 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51149361/

相关文章:

iphone - UIWebView 中的字体显示不正确

objective-c - SIGABRT关于访问NSMutableArray

ios - 如何在后台接收 iOS 上的 watchOS 文件传输

ios - iOS 中的导航栏按钮可见性问题

Swift:对可空/可选类型感到困惑

iphone - 代码 4 : Easy way to convert Mac project to iOS?

xcode - 如何使用 Apples 的 `xcrun simctl status_bar` 设置日期

ios - OpenGL ES 对象绕 Z 轴旋转

ios - 具有自定义图形的 xcode 选项卡 Controller ,在第一次单击之前不会加载

iphone - 将包含 3 个项目的选项卡栏添加到基于 View 的应用程序