Je suis un peu perdue. J'ai utilisé la propriété layer d'UIView pour arrondir les angles de plusieurs éléments de mon application. Cependant, celui-ci UIImageView n'est tout simplement pas conforme. Pas sûr de ce que je manque.
UIImageView (appelé previewImage) est contenu dans une cellule de vue de tableau. J'ai essayé de définir l'emplacement multiple de la propriété cornerRadius (dans la cellule elle-même et dans le contrôleur qui crée la cellule) sans succès.
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.
}
Y a-t-il quelque chose dans la façon dont les cellules sont chargées qui me manque?
Vous devez définir la propriété masksToBounds
de la couche sur YES
:
cell.previewImage.layer.masksToBounds = YES;
En effet, le contrôle UIImageView
crée une pseudo-sous-vue destinée à contenir l'objet UIImage
.
Cela devrait marcher
cell.previewImage.clipsToBounds = YES;
cell.previewImage.layer.cornerRadius = 20;
A noter également que
c'est-à-dire si vous avez ceci
theImageView.contentMode = .scaleAspectFit
et
theImageView.layer.cornerRadius = (theImageView.frame.size.height)/2
theImageView.clipsToBounds = true
ou
theImageView.layer.masksToBounds = true
Cela ne fonctionnera pas. vous devrez vous débarrasser du code aspectFit
//theImageView.contentMode = .scaleAspectFit
Je crois que vous devez définir:
cell.previewImage.layer.masksToBounds = YES;
cell.previewImage.layer.opaque = NO;
Dans Xcode Interface Builder, sélectionnez l'attribut de dessin 'Clip Subviews' pour la vue, puis définissez le rayon du coin dans le code cell.previewImage.layer.cornerRadius = 20;
annule le travail pour moi!
Essayez ce morceau de code ci-dessous
cell.previewImage.layer.cornerRadius = 20;
cell.previewImage.clipsToBounds = YES;
Essayez ce code: -
self.imgaviewName.clipsToBounds = true
self.imageviewName.layer.cornerRadius = 10
Swift 4.2 Réponse:
Pour que le rayon de coin fonctionne, ajoutez l'image à une UIView
et vous devez ensuite définir la propriété masksToBounds
de l'image sur true
:
planeImage.layer.masksToBounds = true
planeImage.layer.cornerRadius = 20
Remarque: remplacez 20 par la cornerRadius
souhaitée
-(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;
}