底部边框未添加到StackView(ios)中的视图中

问题描述 投票:0回答:1

我正在尝试以编程方式将UIView的底部边框添加到堆栈视图中。但是没有将边框添加到UIView()中。将UIView添加到堆栈视图的代码:

    func addOtpViews()
    {
        var otpLength=Int(otpLen as String)!
        print("otpLength is\(otpLength)")

        var i=0;
        while(i<=otpLength)
        {
             var view=UIView(frame: .zero)
            addBottomBorderTo(view: view)
            otpStackView.addArrangedSubview(view)
            i=i+1

        }
        otpStackView.translatesAutoresizingMaskIntoConstraints=false

      }

在上面的otpStackView上是我已在StoryBoard中添加的堆栈视图。

添加底线的代码:

    func addBottomBorderTo(view:UIView) {
        print("bottom is added")
         let layer = CALayer()
         layer.backgroundColor = UIColor.gray.cgColor
         layer.frame = CGRect(x: 0.0, y: view.frame.size.height - 2.0, width: view.frame.size.width, height: 2.0)
         view.layer.addSublayer(layer)
     }

为什么底线未添加到UIView()?请帮助我。谢谢。

ios view uistackview
1个回答
0
投票

您是否在此处检查了视框

layer.frame = CGRect(x: 0.0, y: view.frame.size.height - 2.0, width: view.frame.size.width, height: 2.0)

view.frame可能是(0,0),那么您将看不到底线。

使用视框时请务必小心。

我的建议:1.添加子视图而不是添加子图层,然后使用snapkit进行布局。2.构建一个单独的名为bottomedView的视图类,然后使用snapkit在其中添加子视图。3.构建一个单独的视图类,名为bottomedView,并在onDraw上绘制底线。

请始终注意,当视图意外丢失时,可能无法确定视图框。

© www.soinside.com 2019 - 2024. All rights reserved.