Comment ajouter un masque circulaire à une UIImageview et changer le cadre et les centres en faisant de la sorte?
Je voudrais ajouter un masque circulaire à UIImageVIew. Voici la fonction qui suis aide pour ajouter le masque..
- (void) addMaskToBounds:(CGRect) maskBounds
{
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGPathRef maskPath = CGPathCreateWithEllipseInRect(maskBounds, NULL);
maskLayer.bounds = maskBounds;
[maskLayer setPath:maskPath];
[maskLayer setFillColor:[[UIColor blackColor] CGColor]];
maskLayer.position = CGPointMake(maskBounds.size.width/2, maskBounds.size.height/2);
[self.imageView.layer setMask:maskLayer];
}
Suis en mesure d'ajouter le masque, mais le problème se produit car suis l'évolution de l'image et du centre. L'image est agrandie et a fait des petits basée sur les actions de l'utilisateur. Donc je serait d'ajouter le masque deux fois lorsque les petits et agrandis. Donc, Depuis que suis animer le cadre de changement, tandis que l'animation de l'image déformée, ou déplacées. Comment puis-je surmonter cela ?
Je suppose que c'est mieux expliqué par un exemple de projet. Ici, j'ai créé un projet de Démonstration https://github.com/akshaynhegde/MaskImage sur GitHub, il suffit de lancer pour voir mon problème et je voudrais savoir comment résoudre le problème.
OriginalL'auteur akshaynhegde | 2013-03-09
Vous devez vous connecter pour publier un commentaire.
Espère que cela aidera
UIImageView
lors de l'utilisation d'un masque à tous les...J'ai trouvé ce code très pratique parce que j'ai besoin d'un off-center masque circulaire pour une vue j'étais en train de créer. J'ai d'abord utilisé la couche.cornerRadius à rendre la vue circulaire dans Interface Builder. Ensuite, j'ai utilisé ce code avec un négatif de la valeur de Y dans le tracé de Bézier pour créer un masque. La forme résultante ressemble beaucoup à un Américain de football, qui est ce dont j'avais besoin.
OriginalL'auteur Mrug
Ok, donc depuis le centre de dans mon cas de modifications, en utilisant le masque n'est pas ging pour vous aider. Ainsi, le simple et propre est d'avoir un custom UiImageView et clip le tirage chemin.
Donc pour que, la sous-classe
UIView
et dessiner l'image à l'intérieur et clip le chemin. Voici le remplacé ledrawRect
fonction,Pour info, vous ne pouvez pas sous-classe UIImageView lui-même et remplacer
drawRect
, coz il ne fera pas appel de ladrawRect
,Vous pouvez modifier le centre de la couche de masque aussi.
Noter que votre commentaire n'est pas tout à fait correct -- cette sous-classe UIView doit avoir un UIImage en tant que propriété, pas un UIImageView
OriginalL'auteur akshaynhegde