斯威夫特3和XCode的8:UIBezierPath文本字段错误
问题描述:
似乎有对斯威夫特3的XCode 8中的错误,UIBezierPath
斯威夫特3和XCode的8:UIBezierPath文本字段错误
let myBounds = textField.bounds
let maskPath = UIBezierPath(roundedRect: myBounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = myBounds
maskLayer.path = maskPath.cgPath
self.textField.layer.mask = maskLayer
let frameLayer = CAShapeLayer()
frameLayer.frame = myBounds
frameLayer.path = maskPath.cgPath
frameLayer.strokeColor = UIColor(hexString: "#59a646").cgColor
frameLayer.fillColor = UIColor.white.cgColor
frameLayer.lineWidth = 1*2;
self.textField.layer.addSublayer(frameLayer)
它用于生产类似这样
但现在
任何解决方法?
答
这不太可能是一个错误,并且更可能会改变您的代码不再适用的行为。
这听起来与cornerRadius“不再起作用”非常相似,因为视图的大小现在设置为1000x1000。这可以通过在开始样式之前调用视图的layoutIfNeeded()
来解决。首先,我会尝试相同的解决方案。
然而,它看起来像是一个白色的矩形模糊了你贝塞尔路径的一部分。尝试将背景设置为不同的颜色以确认。难道是你在那个视图上设置cornerRadius
,它不再按预期工作?
或者,尝试将所有代码移动到viewDidAppear
阶段。这可能不是一个永久的解决方案,因为你会看到所有的东西,但它可能有助于理解正在发生的事情。
+0
我实际上尝试在UIView而不是UITextField,它工作正常,给我正确的结果。我还检查了一些Github代码,看起来我的假设是正确的。 –
不要陈述“它产生不正确的结果”,请告诉我们它在做什么以及你认为它应该做什么。也许包括一个屏幕截图。 – rmaddy
更新我的问题,@maddy谢谢 –