Ich bin etwas ratlos. Ich habe die Layer-Eigenschaft von UIView verwendet, um die Ecken mehrerer Elemente in meiner App abzurunden. Dieses eine UIImageView entspricht jedoch einfach nicht. Nicht sicher, was mir fehlt.
Die UIImageView (als previewImage bezeichnet) ist in einer Table View-Zelle enthalten. Ich habe versucht, die cornerRadius-Eigenschaft mehrfach (in der Zelle selbst und im Controller, der die Zelle erstellt) festzulegen, ohne Erfolg.
static NSString *CellIdentifier = @"MyTableViewCell";
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = [topLevelObjects objectAtIndex:0];
cell.previewImage.layer.cornerRadius = 20; //Made it 20 to make sure it's obvious.
}
Gibt es etwas über die Art, wie Zellen geladen werden, die ich vermisse?
Sie müssen die masksToBounds
-Eigenschaft des Layers auf YES
setzen:
cell.previewImage.layer.masksToBounds = YES;
Dies liegt daran, dass das Steuerelement UIImageView
eine Pseudo-Unteransicht für das Objekt UIImage
erstellt.
Das sollte funktionieren
cell.previewImage.clipsToBounds = YES;
cell.previewImage.layer.cornerRadius = 20;
Das ist auch erwähnenswert
wenn Sie das haben
theImageView.contentMode = .scaleAspectFit
und
theImageView.layer.cornerRadius = (theImageView.frame.size.height)/2
theImageView.clipsToBounds = true
oder
theImageView.layer.masksToBounds = true
Es funktioniert nicht. Sie müssen AspektFit-Code loswerden
//theImageView.contentMode = .scaleAspectFit
Ich glaube, Sie müssen einstellen:
cell.previewImage.layer.masksToBounds = YES;
cell.previewImage.layer.opaque = NO;
Wenn Sie im Xcode Interface Builder "Zeichnen von Unteransichten" auswählen, wird das Zeichnungsattribut für die Ansicht zusammen mit dem Eckradius im Code cell.previewImage.layer.cornerRadius = 20;
ausgewählt.
Probieren Sie diesen Code unten aus
cell.previewImage.layer.cornerRadius = 20;
cell.previewImage.clipsToBounds = YES;
Versuchen Sie diesen Code: -
self.imgaviewName.clipsToBounds = true
self.imageviewName.layer.cornerRadius = 10
Swift 4.2 Antwort:
Damit der Eckenradius funktioniert, fügen Sie das Bild einer UIView
hinzu und setzen Sie dann die Eigenschaft masksToBounds
des Bildes auf true
:
planeImage.layer.masksToBounds = true
planeImage.layer.cornerRadius = 20
Hinweis: Ersetzen Sie 20 durch die gewünschte cornerRadius
-(void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self setMaskTo:viewDistance
byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight];
}
- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
{
UIBezierPath *rounded = [UIBezierPath
bezierPathWithRoundedRect:view.bounds
byRoundingCorners:corners
cornerRadii:CGSizeMake(20.0, 20.0)];
CAShapeLayer *shape = [[CAShapeLayer alloc] init];
shape.frame = self.view.bounds;
[shape setPath:rounded.CGPath];
view.layer.mask = shape;
}