【发布时间】:2020-05-06 09:25:04
【问题描述】:
在我的项目中,我想在UIView 中添加一行(此UIView 使用自动布局)。
我正在使用UIBezierPath 和CAShapeLayer 来画线。
这是我的代码:
let myView = UIView()
self.view.addSubView(myView)
myView.translatesAutoresizingMaskIntoConstraints = false
myView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
myView.heightAnchor.constraint(equalToConstant: 40).isActive = true
myView.widthAnchor.constraint(equalToConstant: 100).isActive = true
myView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: myView.frame.height/2))
path.addLine(to: CGPoint(x: myView.frame.width, y: myView.frame.height/2))
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.black.cgColor
shapeLayer.lineWidth = 11.0
myView.layer.addSublayer(shapeLayer)
但我的问题是 viewController 中没有行显示。 当我使用此代码时,一切正常,并且该行显示完美:
let myView = UIView(frame: CGRect(x: 0, y: 160, width: 100, height: 40))
self.view.addSubView(myView)
我该如何解决这个问题?我必须使用自动布局。
【问题讨论】:
-
嗨,Behrad,您能否以不同的方式命名您创建的视图,例如myView 或其他东西。那么在将它作为子视图添加到视图控制器的视图之前先添加视图的路径?我阅读您的代码的方式是,您正在将路径添加到视图控制器的视图。
-
嗨 MacUserT,我更改了我的代码。
-
让我知道它是否有效。
-
我照你说的做,但没用。
-
嗨 Behrad,我试图运行你的代码。您的视图框架是 (0, 0, 0, 0) 并且您添加的框架也是。
标签: swift autolayout uibezierpath