【发布时间】:2016-02-10 10:20:52
【问题描述】:
我有一个自定义 UIButton。 我想将半径添加到某些角落(不是所有角落) 我正在使用 UIBezierPath 进行设置。 但是因为我正在掩盖图层,所以我无法添加阴影。
它适用于所有角落:
func setupView() {
layer.cornerRadius = 10
addShadow(UIColor.blackColor(), opacity: 0.8, radius: 5, offset: CGSizeMake(1, 1))
}
func addShadow(color: UIColor, opacity: Float, radius: CGFloat, offset: CGSize){
layer.shadowColor = color.CGColor
layer.shadowOpacity = opacity
layer.shadowRadius = radius
layer.shadowOffset = offset
}
对于使用 UIBezierPath 的某些角,我只得到圆角但没有阴影
func setupView() {
addCornerRadiusToCurners(false, leftTop: true, rightBottom: false, leftBottom: false, radius: 10)
addShadow(UIColor.blackColor(), opacity: 0.8, radius: 5, offset: CGSizeMake(1, 1))
}
func addCornerRadiusToCurners(rightTop: Bool = true, leftTop: Bool = true, rightBottom: Bool = true, leftBottom: Bool = true, radius: CGFloat) {
var corners: UIRectCorner = []
if rightTop { corners.insert(.TopRight) }
if leftTop { corners.insert(.TopLeft) }
if rightBottom { corners.insert(.BottomRight) }
if leftBottom { corners.insert(.BottomLeft) }
let cornerPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSizeMake(radius, radius))
let cornerMaskLayer = CAShapeLayer()
cornerMaskLayer.path = cornerPath.CGPath
layer.mask = cornerMaskLayer
}
【问题讨论】:
标签: ios swift uibezierpath