2017-09-12 10 views
1

J'ai créé cette fonction pour arrondir les coins spécifiques sur un UIImageView:UIImage disparaît lorsque vous essayez d'ajouter une couche masque

func roundCorners(corners: [UIRectCorner], imageView: UIImageView) -> CAShapeLayer { 
    let maskPath = UIBezierPath.init(roundedRect: imageView.bounds, byRoundingCorners:[.topLeft], cornerRadii: CGSize.init(width: 7.0, height: 7.0)) 
    let maskLayer = CAShapeLayer() 
    maskLayer.frame = imageView.frame 
    maskLayer.path = maskPath.cgPath 
    return maskLayer 
} 

Quand je l'applique à l'image topLeftImage comme ceci: topLeftImage.layer.mask = roundCorners(corners: [.topLeft], imageView: topLeftImage), il fait l'image disparaître . Voici comment je déclare l'image:

let topLeftImage: UIImageView = { 
    let iv = UIImageView() 
    iv.image = #imageLiteral(resourceName: "myImage") 
    iv.layoutIfNeeded() 
    iv.translatesAutoresizingMaskIntoConstraints = false 
    iv.contentMode = UIViewContentMode.scaleAspectFill 
    iv.layer.masksToBounds = true 
    iv.clipsToBounds = true 
    return iv 
}() 

Comment puis-je appliquer un masque de calque et ont encore l'image apparaît à l'écran.

+0

ajouter var paresseux au lieu d'utiliser – karthikeyan

+0

laisser sans rapport, mais votre méthode toujours autour du même coin, je pense que vous devez changer 'laisser maskPath = UIBezierPath.init (roundedRect: imageView.bounds, byRoundingCorners: [.topLeft], cornerRadii: CGSize.init (largeur: 7.0, hauteur: 7.0)) 'par' let maskPath = UIBezierPath.init (arrondiRect: imageView.bounds, byRoundingCorners: coins, cornerRadii: CGSize.init (largeur: 7.0, height: 7.0)) 'si vous voulez vraiment que votre méthode fonctionne en utilisant des paramètres définis –

Répondre

2

Je pense que l'image n'apparaît pas à l'écran car vous n'initialisez pas UIImageView avec l'image. Essayez le code suivant:

let iv = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100)) 
+0

Qui l'a fixé, merci l'homme –