mankee mankee - 4 months ago 33
iOS Question

Alpha component on UIBezierPath Fill

I have a view defined like this :

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

}

}


I'm trying to make it semi-transparent, however using
UIColor(red: (69/255.0), green: (209/255.0), blue: (153/255.0), alpha: 0.5).setFill()
as well as using
bezierPath.fillWithBlendMode( .Normal, alpha: 0.5)
produces the same result of a darker than normal color with no transparency, the more I decrease the
alpha
in both cases, the darker the color becomes. I'm not sure what I'm doing wrong.

Answer

Set the views backgroundColor to UIColor.clearColor().