So fügen Sie eine kreisförmige Maske zu einem UIImageview und ändern Sie den Rahmen und konzentriert sich dabei?
Möchte ich hinzufügen, eine kreisförmige Maske zu UIImageVIew. Hier ist die Funktion, bin mit hinzufügen die Maske..
- (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];
}
Bin in der Lage, fügen Sie die Maske, aber das problem tritt auf, da bin verändert, das Bild Rahmen und center zusammen mit ihm. Das Bild wird vergrößert und klein gemacht, basierend auf der Benutzer-Aktionen. Daher würde ich zusätzlich die Maske zweimal, wenn klein und bei Vergrößerung. So, Da bin animieren Sie den Rahmen ändern, während der Animation das Bild verzerrt oder verdrängt. Wie überwinde ich diese ?
Ich denke, es ist am besten erklärt mit einem Beispiel-Projekt. Hier habe ich eine Demo-Projekt https://github.com/akshaynhegde/MaskImage auf GitHub, führen Sie es einfach, um zu sehen, mein problem und lassen Sie mich wissen, wie das problem zu beheben.
InformationsquelleAutor akshaynhegde | 2013-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hoffe das hilft
UIImageView
bei der Verwendung einer Maske, bei der alle...Ich fand diesen code sehr praktisch, denn ich brauchte eine off-center kreisförmige Maske für ein Blick, ich war zu erstellen. Ersten habe ich Schicht.cornerRadius, um die Sicht Rundschreiben im Interface Builder. Dann habe ich diesen code mit einem negativen Y-Wert in die Bézier-Pfad erstellen einer Maske für Sie. Die resultierende Form sieht viel wie ein American-football, das ist, was ich brauchte.
InformationsquelleAutor Mrug
Ok, also da der center in meinem Fall ändert sich, mit der Maske nicht ging, um zu helfen. So die einfache und saubere Art und Weise ist, um eine benutzerdefinierte UiImageView und clip das ziehen Weg.
So, Unterklasse
UIView
und ziehen das darin enthaltene Bild-und clip-Pfad. Hier ist die überschreiben-diedrawRect
Funktion,FYI, können Sie nicht Unterklasse UIImageView selbst und überschreiben
drawRect
, coz es nicht nennen, diedrawRect
,Sie können ändern Zentrum der Ebenenmaske auch.
Beachten Sie, dass Ihr Kommentar ist nicht ganz korrekt-diese Unterklasse von UIView muss ein UIImage als eine Eigenschaft, nicht eine UIImageView
InformationsquelleAutor akshaynhegde