2011-11-29 26 views
6

Tôi đang tạo nút lập trình cho ứng dụng iPad. khi tôi nhìn thấy nút, có vẻ là một loại bóng tối bên dưới nó. nó là gì và làm thế nào tôi có thể loại bỏ nó?Có bóng trên nút của tôi

shadow button

đây là mã mà tạo ra nó:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
myButton.titleLabel.font = [UIFont fontWithName:@"Trebuchet MS" size:12]; 
[myButton setTitle:@"test" forState:UIControlStateNormal]; 
myButton.frame = CGRectMake(0, 0, self.leftScrollView.frame.size.width, 50); 

UIImageView *myImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gear12.png"]]; 

[myButton addSubview:myImageView]; 
[self.leftScrollView addSubview:myButton]; 

UPDATE:

ok, tôi nhận thấy tôi chỉ nhận được hiệu quả mà khi nó ở scrollview của tôi. nếu tôi thêm nó vào xem, không có hiệu ứng đổ bóng.

nút kiểm tra hàng đầu, nút này là chế độ xem phụ của chế độ xem. nút dưới cùng là một phần phụ của scrollview mà là một subview của view (nút/view vs button/scrollview/view).

phần màu trắng là chế độ xem, màu xám là chế độ xem/chế độ xem.

shadow effect 2

UPDATE 2:

như chỉ ra bởi robmayor, UIButtons luôn luôn có dòng đôi hiệu quả, chỉ cần không noticeble khi màu nền là màu trắng. màu xanh lam là chế độ xem và màu xám là chế độ xem cuộn xuống của chế độ xem phụ.

enter image description here

+0

này có thể có ích: http://stackoverflow.com/questions/18341319/how-to-get-rid-of-gap-around-round-rect-button –

Trả lời

5

Trên iPad, UIButton tròn-rect luôn vẽ một đường màu trắng dọc theo cạnh dưới cùng của nó. Bạn không thể thấy dòng trắng đó nếu nút giám sát của nút có màu trắng, nhưng nó vẫn ở đó.

Bạn có một vài lựa chọn:

  • Tận dụng tối trắng SuperView. Đây là cách dễ nhất nhưng bạn có thể không thích giao diện của nó.

  • Làm cho một số hình ảnh trực tràng được làm tròn trong trình chỉnh sửa hình ảnh yêu thích của bạn. Đặt loại nút thành tùy chỉnh và đặt hình ảnh trực tràng tròn của bạn làm hình ảnh của nút.

  • Tạo lớp con của UIButton và ghi đè phương thức drawRect: của nó.

  • Set kiểu nút để tùy chỉnh và sử dụng tài sản lớp của nút (button.layer.backgroundColor, button.layer.borderColor, button.layer.borderWidth, button.layer.cornerRadius) để cung cấp cho các nút xuất hiện rect tròn. Bạn sẽ phải cập nhật button.layer.backgroundColor khi nút được chạm nếu bạn muốn nút này chuyển sang màu xanh dương như bình thường. (Trên thực tế một bình thường sử dụng một gradient màu xanh.)

+0

điều này khá ngớ ngẩn của táo. làm cho thêm một nút đơn giản phức tạp hơn sau đó nó cần phải được. cảm ơn. – Padin215

+0

Có vẻ như một nút tròn được làm tròn thực sự được vẽ như một UITableViewCell kiểu nhóm duy nhất và do đó kế thừa viền màu trắng ở phía dưới. Đường viền màu trắng này trông tuyệt vời cho ô dưới cùng trên nền bảng theo nhóm theo tiêu chuẩn. Nhưng làm cho các nút cùng một mã vẽ là một sự lựa chọn nghèo trên một phần của Apple. – matt

-1

Thay [UIButton buttonWithType:UIButtonTypeRoundedRect] với:

UIButton *myButton = [UIButton new]; 

hay:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

Bạn muốn có nút tùy chỉnh của bạn. Bạn vẫn có thể làm cho nó với các góc tròn nếu cần thiết.

+1

Tại sao điều đó có tạo nên sự khác biệt không? Các nút tròn được làm tròn thường không tự vẽ hai lần như thế này. Rất có thể OP sẽ vô tình vẽ hai nút ở cùng một vị trí. – matt

+0

Tôi chỉ đang thêm nút đơn trong mã của tôi ngay bây giờ. tôi đã cập nhật câu hỏi của mình với thông tin được thêm. hình ảnh thứ hai, tôi chỉ cần kéo các nút trong IB. – Padin215

+0

@matt, các nút tròn được làm tròn hoàn toàn tự vẽ như thế. Đó là tầm thường để kiểm tra nó cho chính mình trong IB. –

9

Câu hỏi này cũ (6 tháng) nhưng tôi đã tìm thấy giải pháp để xóa/che dấu hiệu ứng xấu này của các dòng kép.

[yourButton.layer setBackgroundColor: [[UIColor blackColor]CGColor]]; 
[yourButton.layer setBorderWidth:1.0f]; 
[yourButton.layer setBorderColor:[[UIColor blackColor]CGColor]]; 
[yourButton.layer setShadowOpacity:0.1f]; 
[yourButton.layer setCornerRadius:10]; 

UIColor được chọn tùy thuộc vào nền hiện tại của chế độ xem của bạn.

Kết quả: enter image description here

+0

Điều này tạo ra một đường viền màu đen trong nút. Làm việc tốt hơn, nhưng không loại bỏ dòng. – Rodrigo

+0

Điều này thật hoàn hảo! (Mặc dù, tôi không chắc chắn thiết lập màu nền hoặc độ mờ tối là cần thiết.) – fumoboy007

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