【发布时间】:2017-04-29 16:27:48
【问题描述】:
我正在尝试实现这样的目标:
粉色部分是固定的,灰色区域可能会滚动。我有以下视图结构:
我目前有这个代码:
extension FloatingPoint {
var degreesToRadians: Self { return self * .pi / 180 }
var radiansToDegrees: Self { return self * 180 / .pi }
}
@IBDesignable
class MaskView: UIView {
let startAngle: CGFloat = 180
let endAngle: CGFloat = 0
override func layoutSubviews() {
super.layoutSubviews()
let multiplier: CGFloat = (frame.size.height * 3)
let maskLayer = CAShapeLayer()
maskLayer.path = UIBezierPath(arcCenter: CGPoint(x: frame.size.width/2, y: frame.size.height * multiplier),
radius: frame.size.height * multiplier,
startAngle: startAngle.degreesToRadians,
endAngle: endAngle.degreesToRadians,
clockwise: true).cgPath
layer.mask = maskLayer
}
}
蒙版视图设置为具有灰色背景色。
我遇到的问题是圆形部分不透明。将颜色更改为UIColor.clear 只会使圆形部分消失。我是否从根本上为此采取了错误的方法?任何帮助将不胜感激,谢谢。
【问题讨论】:
-
请问您如何更改“要清除的颜色”?你能告诉我们你的代码吗?
-
我在情节提要中这样做了,但在代码中它将是
backgroundColor = UIColor.clear -
乘数应该是 3 而不是
frame.size.height * 3let multiplier: CGFloat = 3 -
神秘的乘数只是我试图弄清楚如何绘制所有屏幕宽度相等的圆,但这是另一回事..
标签: swift uibezierpath cashapelayer