【发布时间】:2018-07-13 12:35:39
【问题描述】:
我想在 UIView 中设置从左到右渐变的边框颜色 [Red, Green]。 比如:
我尝试了以下代码:-
class View: UIView {
override func layoutSubviews() {
super.layoutSubviews()
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: [.topLeft, .bottomLeft, .topRight, .bottomRight], cornerRadii: CGSize(width: frame.size.height / 2, height: frame.size.height / 2))
let gradient = CAGradientLayer()
gradient.frame = CGRect(origin: CGPoint.zero, size: frame.size)
gradient.colors = [UIColor.green.cgColor, UIColor.red.cgColor]
let shape = CAShapeLayer()
shape.lineWidth = 10
shape.path = path.cgPath
shape.strokeColor = UIColor.black.cgColor
shape.fillColor = UIColor.clear.cgColor
gradient.mask = shape
layer.insertSublayer(gradient, at: 0)
}
}
我无法解决三个问题:-
1- 我已将 lineWidth 设置为 10,但它在角落处显示宽度 10,而在水平/垂直处仅显示 5。
2- 我想显示渐变从左到右不是从上到下。
我尝试下面的代码设置从左到右的渐变但不起作用:-
// gradient.frame = CGRect(origin: CGPoint.zero, size: frame.size)
gradient.startPoint = CGPoint(x: 0.0, y: 0.5)
gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
请帮忙。提前致谢。
【问题讨论】:
-
这个我也试过了。
标签: ios swift uiview cagradientlayer