2011-07-29 26 views
8

Hãy nhìn vào hình ảnh sau:Làm thế nào để loại bỏ các cạnh hình chữ nhật sắc nét khỏi điều khiển UIButton?

enter image description here

Như bạn có thể thấy các cạnh là hình chữ nhật sắc nét và họ đang sắp ra của nút góc tròn. Làm thế nào tôi có thể không hiển thị các cạnh và chỉ hiển thị các nút tròn?

UPDATE (Solution):

tôi đã sử dụng đoạn mã sau để đạt được các góc tròn:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.stopButton.bounds 
             byRoundingCorners:UIRectCornerAllCorners 
             cornerRadii:CGSizeMake(12.0, 12.0)]; 

// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.stopButton.bounds; 
maskLayer.path = maskPath.CGPath; 
// Set the newly created shape layer as the mask for the image view's layer 
self.stopButton.layer.mask = maskLayer; 

MỚI VẤN ĐỀ:

Mã này mang lại cho tôi những lỗi trên startButtonRound.layer. cornerRadius line.

UIButton *roundStartButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     roundStartButton.frame = CGRectMake(10, 10, 100, 20); 
     [roundStartButton setBackgroundImage:[UIImage imageNamed:@"green_gradient.jpg"] forState:UIControlStateNormal]; 

     roundStartButton.layer.cornerRadius = 12.0; 
UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithCustomView:roundStartButton]; 

Trả lời

17

Bạn có thể làm điều này với một mình CALayer:

CALayer *myLayer = [CALayer layer]; 
[myLayer setMasksToBounds:YES]; 
[myLayer setCornerRadius:5.0f]; 
[myLayer setBorderWidth:1.0f]; 
[myLayer setBorderColor: [[UIColor blackColor] CGColor]]; 
[myLayer setBackgroundColor: [[UIColor whiteColor] CGColor]]; 

Bạn cũng sẽ muốn bao gồm khuôn khổ QuartzCore và bao gồm các khung tiêu đề trong của riêng bạn.

#include <QuartzCore/QuartzCore.h> 

Hope this helps

Tim

+0

Tôi đã thử [nút lớp] setCornerRadius: 5.0f]; nhưng nó không có ảnh hưởng gì đến nút. – azamsharp

+0

Bạn có thể cần đặt MasksToBounds thành có để có được lớp để cắt nội dung của nó thành các góc được làm tròn. –

+0

UIButton có phải được khai báo là IBOutlet để cornerRadius hoạt động không? Xem vấn đề cập nhật bài đăng ban đầu. – azamsharp

5

Tôi nghĩ rằng tất cả những gì có thể được thực hiện với:

self.stopButton.layer.cornerRadius = 12.0; 

Nhưng bạn đã thử

self.stopButton.opaque = NO; 
self.stopButton.backgroundColor = [UIColor clearColor]; 

?

+0

Cảm ơn Bill! Điều đó đã thành công tuyệt vời! Tôi không chắc chắn những gì tôi đã làm nhưng bây giờ ngay cả khi không có angleRadius Nó đã không được hiển thị các cạnh. Nhưng mã của bạn đã xóa 5-6 dòng mã của tôi để cảm ơn! – azamsharp

+0

UIButton.layer.cornerRadius không hoạt động đối với tôi. Nó trả về lỗi nhưng thiết lập backgroundColor để xóa và đặt opaque thành NO. – okysabeni

+0

@Yko, Có phải bạn đang sử dụng 'UIButton.layer.cornerRadius'? Đó là (cố gắng) truy cập vào lớp, không phải là một thể hiện của lớp. – bshirley

0

tạo thành giao diện của hình ảnh bạn đã đặt màu bibground UIButton thành 'Trắng'. Làm cho nó 'Clear Color'.

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