2012-12-24 45 views
6

Sau khi xóa nền của thanh công cụ, với mặt nạ hình ảnh, đường bóng vẫn nằm trên thanh công cụ. Làm thế nào để chúng ta thoát khỏi nó? Như bạn có thể thấy, bằng hình ảnh dưới đây, tôi muốn sử dụng thanh công cụ và các nút nhưng không có nền hoặc bóng tối.Cách xóa hoặc ẩn bóng trên thanh công cụ

const float colorMask[6] = {222, 255, 222, 255, 222, 255}; 
UIImage *_img = [[UIImage alloc] init]; 
UIImage *_maskedImage = [UIImage imageWithCGImage:CGImageCreateWithMaskingColors(_img.CGImage, colorMask)]; 
[self.navigationController.toolbar setBackgroundImage:_maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 

Toolbar top shadow after hiding background with image mask

+0

Không chỉnh sửa câu hỏi của bạn thành câu trả lời, điều đó không có ý nghĩa gì nữa. Trả lời câu hỏi của riêng bạn là tốt (bạn cũng có thể chấp nhận câu trả lời của riêng mình). – jrturton

+0

@jrturton Oh, cảm ơn nhé. Tôi do dự khi sử dụng "Trả lời câu hỏi của riêng tôi"; không chắc lắm. Thuộc tính 'setShadowImage' cho' thanh công cụ 'né tránh tôi vì nó nằm dưới 'UIToolbar'; trong tài liệu dành cho nhà phát triển. –

Trả lời

5

Thêm dòng này cũng

[toolbar setShadowImage:_maskedImage forToolbarPosition:UIToolbarPositionAny]; 

Hai lưu ý quan trọng:

  1. Bạn cũng phải thiết lập hình nền là tốt, nếu không điều này sẽ không làm bất cứ điều gì.
  2. này là dành cho iOS 6+
+0

Bạn có thể sửa định dạng mã của mình không, vì vậy nó xuất hiện trong một khu vực mẫu mã. Giúp dễ đọc hơn. – Popeye

+0

thực hiện định dạng lại. –

+0

không hoạt động trên iOS7. – natbro

2

Đầu Thêm QuartzCore/QuartzCore khuôn khổ dự án của bạn và sau khi nhập khẩu nó này trong tập tin .m của bạn như dưới đây ...

#import <QuartzCore/QuartzCore.h> 

và chỉ sau thêm mã dưới này ...

yourToolBar.layer.shadowOffset = CGSizeMake(0.0f, 0.0f); 

    yourToolBar.layer.shadowOpacity =0.0f; 

    yourToolBar.layer.shadowRadius = 0.0f; 

hy vọng điều này hữu ích cho bạn ...

+0

điều này không ảnh hưởng đến iOS7 mà tôi có thể biết. – natbro

-1

setBackgroundImage: _maskedImage cần phải loại bỏ các bóng hoặc nếu không gọi phương thức rõ ràng bóng tùy chỉnh sau khi thanh công cụ ẩn

15

Không có câu trả lời khác làm việc trên iOS7, một số dường như không làm việc liên tục trên các phiên bản iOS cũ hơn một trong hai. Điều này (diễn giải http://samplecodebank.blogspot.com/2013/06/UIToolbar-setShadowImage-forToolbarPosition-example.html) hoạt động liên tục trên 5.1+ đối với tôi và ngắn gọn và hiệu quả hơn so với tạo hình nền và mặt nạ màu tùy chỉnh.

toolbar.backgroundColor = [UIColor clearColor]; 
if ([toolbar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) { 
    [toolbar setBackgroundImage:[UIImage new] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
} 
if ([toolbar respondsToSelector:@selector(setShadowImage:forToolbarPosition:)]) { 
    [toolbar setShadowImage:[UIImage new] forToolbarPosition:UIToolbarPositionAny]; 
} 
0

Không có câu trả lời khác làm việc cho tôi trong iOS 7, vì vậy đây là những gì tôi đã làm bằng Interface Builder:

  1. Thêm thanh công cụ để một UIView.
  2. Kích thước UIView giống với thanh công cụ UIToolbar.
  3. Kéo phần trên cùng của UIView xuống cho đến khi nó chỉ che phần trên cùng của thanh công cụ UIToolbar.
  4. Sử dụng Trình theo dõi thuộc tính nhấp vào 'Clip Subviews'.

Thao tác này sẽ cắt đầu thanh công cụ tắt và do đó xóa bóng xám.

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