2015-03-20 13 views
6

Sto tentando di mascherare un UIView quadrato con un CAShapeLayer circolare in rapido. Ho il seguente:Maschera Swift del livello cerchio su UIView

var snapFrame = self.snapButton.frame 
    var innerFrame = CGRect(x: snapFrame.minX + 1, y: snapFrame.minY + 1, width: snapFrame.width - 2, height: snapFrame.height - 2) 

    maskLayer = CAShapeLayer() 
    var circlePath = UIBezierPath(roundedRect: innerFrame, cornerRadius: innerFrame.width) 
    maskLayer.path = circlePath.CGPath 
    maskLayer.fillColor = UIColor.clearColor().CGColor 

    shutterOverlay = UIView() 
    shutterOverlay.frame = innerFrame 
    shutterOverlay.backgroundColor = BUBConstants.primaryColor_blue 

    self.view.addSubview(shutterOverlay) 
    self.view.layer.addSublayer(maskLayer) 

    shutterOverlay.layer.mask = maskLayer 

Se io commento le ultime due righe, sia il livello e la vista appaiono nei posti corretti e le dimensioni corrette. Tuttavia, l'aggiunta dell'ultima riga fa sì che sia la vista che il livello non vengano mostrati.

Inoltre, ho bisogno di farlo in questo modo come il mio obiettivo finale è quello di avere un'animazione in cui il quadrato UIView riempie il cerchio. Non posso mostrare solo una vista circolare.

Qualcuno può indicarmi dove sto andando male?

risposta

9

è necessario aggiungere la maschera per la shutterOverlay come questo

shutterOverlay.layer.addSublayer(maskLayer) 

al posto dello strato della vista.

La maschera deve essere un sottolivello del livello che desidera mascherare.

Problemi correlati