UIBezierPath Fill 上的 Alpha 组件
Alpha component on UIBezierPath Fill
我有一个这样定义的视图:
class TriangleView: UIView {
override func drawRect(rect: CGRect) {
// Get Height and Width
let layerHeight = self.layer.frame.height
let layerWidth = self.layer.frame.width
// Create Path
let bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPointMake(0, 0))
bezierPath.addLineToPoint(CGPointMake(0, layerHeight))
bezierPath.addLineToPoint(CGPointMake(layerWidth, layerHeight + 4))
bezierPath.addLineToPoint(CGPointMake(0, 0))
bezierPath.closePath()
// Apply Color
UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0).setFill()
bezierPath.fill()
// Mask to Path
let shapeLayer = CAShapeLayer()
shapeLayer.borderColor = UIColor.clearColor().CGColor
shapeLayer.path = bezierPath.CGPath
self.layer.mask = shapeLayer
}
}
我试图让它半透明,但是使用 UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.5).setFill()
和使用 bezierPath.fillWithBlendMode( .Normal, alpha: 0.5)
产生的结果相同,比正常颜色更暗,没有透明度,我减少的越多alpha
在这两种情况下,颜色变得越深。我不确定我做错了什么。
将视图 backgroundColor
设置为 UIColor.clearColor()
。
我认为您正在为 ViewController 上的主视图分配 TriangleView。而不是从 Object Library 中拖动另一个 view 并将其指定为 TriangleView
我有一个这样定义的视图:
class TriangleView: UIView {
override func drawRect(rect: CGRect) {
// Get Height and Width
let layerHeight = self.layer.frame.height
let layerWidth = self.layer.frame.width
// Create Path
let bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPointMake(0, 0))
bezierPath.addLineToPoint(CGPointMake(0, layerHeight))
bezierPath.addLineToPoint(CGPointMake(layerWidth, layerHeight + 4))
bezierPath.addLineToPoint(CGPointMake(0, 0))
bezierPath.closePath()
// Apply Color
UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 1.0).setFill()
bezierPath.fill()
// Mask to Path
let shapeLayer = CAShapeLayer()
shapeLayer.borderColor = UIColor.clearColor().CGColor
shapeLayer.path = bezierPath.CGPath
self.layer.mask = shapeLayer
}
}
我试图让它半透明,但是使用 UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.5).setFill()
和使用 bezierPath.fillWithBlendMode( .Normal, alpha: 0.5)
产生的结果相同,比正常颜色更暗,没有透明度,我减少的越多alpha
在这两种情况下,颜色变得越深。我不确定我做错了什么。
将视图 backgroundColor
设置为 UIColor.clearColor()
。
我认为您正在为 ViewController 上的主视图分配 TriangleView。而不是从 Object Library 中拖动另一个 view 并将其指定为 TriangleView