2012-06-12 8 views
5

Próbuję zaokrąglić tylko górny prawy i lewy róg mojego tableview. Używam poniższego kodu i wydaje się, że tylko zaokrąglam w lewym górnym rogu ...Jak zaokrąglić tylko narożniki na 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 Użyłem tej odpowiedzi, aby zrobić dokładnie to samo. – BBog

+1

Poznaj swój stary post, ale upewnij się, że masz. [tableView.layer setMasksToBound: YES] i powinno być w porządku i dandy –

+0

Zobacz zaakceptowaną odpowiedź [tutaj] [1]. To może być ten sam problem. [1]: http://stackoverflow.com/questions/26934231/uiview-in-cell-cant-round-right-hand-corners –

Odpowiedz

2

Mam nadzieję, że to zadziała. Znajdź najlepsze ścieżki narożne do tworzenia warstwy maskującej

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

Utwórz maskę warstwy kształtu używając UIBezierPath maskPath

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

ustawić warstwę maski maskLayer

self.testView.layer.mask = maskLayer;