2013-09-25 28 views
15

Tôi đang gặp một số sự cố với [UIBarButtonItem appearance] đối với hình nền của nút quay lại.Hình nền của nút quay lại không xuất hiện trước khi chạm vào iOS 7

thường (iOS 5 và iOS 6) tôi đã có thể thiết lập các hình nền của nút quay lại như thế này:

[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

Nhưng ở iOS 7 hình nền không hiển thị trên nút quay lại. Điều kỳ lạ là, hình nền thực sự xuất hiện khi nút quay lại đã được chạm một lần.

Tôi đã thử đặt hình ảnh cho tất cả các tiểu bang, để kiểm tra xem iOS 7 có đang sử dụng một loại trạng thái mới nào đó cho nút quay lại không bị ảnh hưởng, nhưng điều đó có vẻ không đúng.

Bạn có ý tưởng gì không, tôi đang làm gì sai?

+0

Có thể sửa chữa các trục trặc hiển thị với một phương pháp swizzled; xem câu trả lời của tôi tại http://stackoverflow.com/a/19452709/1754225. Nhưng một số lựa chọn thay thế khác có thể thích hợp hơn. –

+0

Thật không may tôi cũng phải đối mặt với cùng một vấn đề. Bạn đã nhận được bất kỳ giải pháp cho điều này? – Sourabh

+0

Không. Tôi đã phải tạo một nút back tùy chỉnh như một 'UIButton' và đặt nó thành' leftBarButtonItem' để làm việc xung quanh nó. :-( –

Trả lời

0

cố gắng thay đổi màu sắc của nút. Có một số vấn đề trong iOS 7 cho UIBarButton

+0

Bạn có thể đưa ra một số bằng chứng cho yêu cầu bồi thường không? Tôi đang gặp vấn đề tương tự và tôi phải giải thích cho khách hàng.Đó là lý do tại sao tôi hỏi bạn :) – Popara

+0

đầu tiên hãy thử ti bản thân và nếu nó hoạt động hơn u có thể giải thích nó cho khách hàng cũng – Ekra

1

Tôi đã tìm kiếm sự cố này và nhận thấy rằng bạn không phải là người duy nhất có cùng một vấn đề. Có nhiều người khác phải đối mặt với cùng một vấn đề với UIAppearance. Đây là những bằng chứng (để giải thích cho bạn để khách hàng của bạn):

  1. UIBackButton Background Image not appearing
  2. Back button is not visible in iOS 7

Trong trường hợp này, những gì bạn có thể làm là đi theo trả lời được cung cấp trong Liên kết thứ 2.

Bạn có thể thiết lập các backIndicatorImage tài sản trên UINavigationBar đến một hình ảnh tùy chỉnh hoặc bạn có thể thay đổi màu sắc của backIndicatorImage bằng cách thiết lập tintColor tài sản trên UINavigationBar.

Bạn có thể tạo tùy chỉnh UIBarButtonItem và gán nó theo cách thủ công là leftBarButtonItem của UINavigationItem.

1

Một giải pháp mà sẽ làm cho nền xuất hiện một cách chính xác trên iOS7 được tại OS 7 custom back button. Nó biến đổi một phương pháp để sửa lỗi Apple (đó là họ quên gọi setNeedsDisplay trên chế độ xem riêng tư khi hình nền được thay đổi). Đi không biên giới có lẽ tốt hơn, nếu có thể, nhưng sự gian lận không hoạt động.

0

Để làm việc với iOS7 bạn cần phải sử dụng

UIImage *backButton = [[UIImage imageNamed:@"icon_back" resizableImageWithCapInsets:UIEdgeInsetsZero]; 
if ([UINavigationBar instancesRespondToSelector:@selector(setBackIndicatorImage:)]) { 
    [[UINavigationBar appearance] setBackIndicatorImage:backButton]; 
    [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:backButton]; 
}else{ 
//ios 5 and 6 code 
} 
Các vấn đề liên quan