2010-12-01 15 views
34

Debido a UIProgressHUD necesito acceder a la API privada, , así que espero construir un UIView con una esquina circular y un borde blanco. que sé hacer la ronda esquina es:UIView con esquina redonda y borde blanco

view.layer.cornerRadius = 5; 

Pero, ¿cómo hacer que el UIView tiene esquinas redondeadas y bordes blancos al mismo tiempo?

la bienvenida a cualquier comentario

Gracias InterDev

Respuesta

75

Usando el mismo objeto de capa:

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

Hay propiedades de borde en la capa de la vista, así: por ejemplo:

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

CALayer es parte de Core Animation, no UIKit. Por lo tanto, se necesita un CGColor, no UIColor. – MarkPowell

+1

Oh sí, lo siento, estaba simplemente tipeando eso de mi cabeza. –

0
[view.layer setBorderWidth:2]; 

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

código para obtener esquinas redondeadas y la frontera

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

veces radio de la esquina con borde blanco no funciona correctamente así que uso UIBezierPath y CAShapeLayer.

Para hacer que el radio de la esquina

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; 

Para hacer que el borde blanco

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]; 

Se trabajará. Espero que esta ayuda

+1

Utilizando .cornerRadius, .borderWidth y .borderColor junto con .clipsToBounds parecía darme un artefacto alrededor de la imageView cuando quería una imagen redonda con un borde blanco. Esto solucionó el problema para mí. – Undrea

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