2012-12-28 36 views
7

Tôi đã nghiên cứu một chút và không thấy cách nào dễ dàng để đặt chỉ góc trên cùng bên phải và trên cùng bên trái của vòng UIView, phải không?Thực hiện các góc cụ thể của UIView tròn

ps. Mã này làm cho tất cả 4 góc tròn đó là smth. Tôi không muốn.

#import <QuartzCore/QuartzCore.h> 

self.layer.cornerRadius = 5; 
self.layer.masksToBounds = YES; 
+1

http://stackoverflow.com/questions/4847163/round-two-corners-in-uiview?rq=1 –

+0

thể trùng lặp của [cách thiết cornerRadius chỉ trên bên trái và đỉnh góc phải của một UIView?] (http://stackoverflow.com/questions/10167266/how-to-set-cornerradius-for-only-top-left-and-top-right-corner-of-a-uiview) –

Trả lời

22

Bạn có thể làm điều đó với đoạn này:

// Set top right & left corners 
[self setMaskTo:yourView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight]; 

EDIT

Xin lỗi, tôi quên

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners 
{ 
    UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds 
                byRoundingCorners:corners 
                 cornerRadii:CGSizeMake(8.0, 8.0)]; 
    CAShapeLayer *shape = [[CAShapeLayer alloc] init]; 
    [shape setPath:rounded.CGPath];  
    view.layer.mask = shape; 
} 

PS này: như tôi đã nói trong các bình luận, nếu bạn sử dụng những thứ như thế này khi hiển thị UITableViewCell ô, tôi đã cho und rằng nó luôn luôn là một lựa chọn tốt hơn để sử dụng hình ảnh nền bởi vì loại công cụ vẽ luôn luôn ảnh hưởng đến hiệu suất.

+1

FYI, nếu bạn sử dụng những thứ như thế này khi hiển thị các ô 'UITableViewCell', tôi thấy rằng nó luôn là lựa chọn tốt hơn để sử dụng hình nền vì loại công cụ vẽ này luôn ảnh hưởng đến hiệu suất. – amb

+2

nhận xét này có lẽ nên được nói trong câu trả lời, mặt nạ là một lượt xem hiệu suất lớn và phải luôn luôn có hình nền nếu bạn có thể giúp nó – wattson12

+0

Cảm ơn nhận xét nó hoạt động! ps. Tôi không sử dụng nó như là một UITableViewcell, anyway, ngay cả khi tôi là tôi sẽ không biết thực sự làm thế nào để làm điều này bằng cách sử dụng hình ảnh nền ...: (((nhưng cảm ơn anyway. – user1903992

0

tôi đã cố gắng mở rộng cho các UIView một lần và nó đã không làm việc đối với tôi bởi vì nó đã gây ra vấn đề khi vẽ một tế bào

tôi nhận được một giải pháp tốt hơn và dễ dàng hơn bây giờ trong 2 bước mà làm việc hoàn toàn tốt :)

1) một dòng mã (Swift 2.0) - nó vết thương tất cả 4 góc của một cái nhìn:

YourView.layer.cornerRadius = 10 

2) và một bổ sung trong storyboard bạn thêm 1 cái nhìn với góc thường xuyên mà bạn cần không có góc tròn và điều chỉnh các ràng buộc khi bạn cần: lưu ý rằng Chế độ xem góc nhỏ thông thường phải ở phía sau chế độ xem chính. This is how it looks in storyboard

Here you can see constraints needed for the small view

Các vấn đề liên quan