2012-06-12 19 views
5

Estoy tratando de redondear solo las esquinas superiores derecha e izquierda de mi tabla vista. Estoy usando el siguiente código y solo parece estar redondeando la esquina superior izquierda ...¿Cómo redondear solo esquinas en una UITableView?

CAShapeLayer *topLayer = [CAShapeLayer layer]; 
UIBezierPath *roundedPath = 
[UIBezierPath bezierPathWithRoundedRect:self.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(9.f, 9.0f)];  
topLayer.path = [roundedPath CGPath]; 
+0

http: // stackoverflow .com/a/5826698/855738 Usé esta respuesta para hacer más o menos lo mismo – BBog

+1

Sé que es una publicación anterior, pero solo asegúrate de que tienes. [tableView.layer setMasksToBound: YES] y debería estar bien y dandy –

+0

Ver la respuesta aceptada [aquí] [1]. Puede ser el mismo problema. [1]: http://stackoverflow.com/questions/26934231/uiview-in-cell-cant-round-right-hand-corners –

Respuesta

2

Espero que esto funcione. Encuentra las trayectorias de esquina superior para crear una capa de máscara

UIBezierPath *PathToMask; 
PathToMask = [UIBezierPath bezierPathWithRoundedRect:self.testView.bounds 
           byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) 
             cornerRadii:CGSizeMake(8.0, 8.0)]; 

Crear una máscara de capa de forma con el UIBezierPath maskPath

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
maskLayer.frame =self.testView.bounds; 
maskLayer.path = PathToMask.CGPath; 

establecer la capa de máscara maskLayer

self.testView.layer.mask = maskLayer; 
Cuestiones relacionadas