2010-12-01 4 views
34

En raison de UIProgressHUD besoin d'accéder api privé, donc j'espère construire un UIView avec coin rond et bordure blanche. je sais faire le tour d'angle est:UIView avec coin rond et bordure blanche

view.layer.cornerRadius = 5; 

Mais comment faire le UIView a coin rond et bordure blanche en même temps?

Bienvenue tout commentaire

Merci InterDev

Répondre

75

En utilisant le même objet couche:

view.layer.borderWidth = 1; 
view.layer.borderColor = [[UIColor whiteColor] CGColor]; 
11

Il y a des propriétés des frontières dans la couche de la vue ainsi: par exemple:

view.layer.borderWidth = 1; 
view.layer.borderColor = [UIColor redColor].CGColor; 
+2

CALayer fait partie de Core Animation, pas UIKit. Par conséquent, il prend un CGColor, pas UIColor. – MarkPowell

+1

Oh oui, désolé je ne faisais que taper ça de ma tête. –

0
[view.layer setBorderWidth:2]; 

[view.layer setBorderColor:[[UIColor whiteColor]CGColor]]; 
4

code pour obtenir des coins arrondis et frontière

#import <QuartzCore/QuartzCore.h> 
view.layer.cornerRadius = 10; 
view.layer.borderWidth = 1; 
view.layer.borderColor = [[UIColor whiteColor] CGColor]; 
6

rayon d'angle Parfois, avec bordure blanche ne fonctionne pas correctement donc j'utiliser UIBezierPath et CAShapeLayer.

Pour faire le rayon d'angle

UIBezierPath *maskPath; 
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.imageView.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10.0, 10.0)]; 

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame = self.view.bounds; 
maskLayer.path = maskPath.CGPath; 
self.imageView.layer.mask = maskLayer; 

Pour rendre la bordure blanche

CAShapeLayer* borderShape = [CAShapeLayer layer]; 
borderShape.frame = self.imageView.bounds; 
borderShape.path = maskPath.CGPath; 
borderShape.strokeColor = [UIColor whiteColor].CGColor; 
borderShape.fillColor = nil; 
borderShape.lineWidth = 3; 
[self.imageView.layer addSublayer:borderShape]; 

Il fonctionnera. Espérons que cette aide

+1

L'utilisation de .cornerRadius, .borderWidth et .borderColor avec .clipsToBounds semblait me donner un artefact autour de l'imageView lorsque je voulais une image ronde avec une bordure blanche. Cela a réglé le problème pour moi. – Undrea

5
view.layer.cornerRadius = 5; 
view.clipsToBounds = YES; 
view.layer.borderWidth = 1; 
view.layer.borderColor = [UIColor whiteColor].CGColor; 
Questions connexes