2012-07-04 42 views
6

Tôi đang trong quá trình kết hợp tính năng UIAppearance của iOS 5 để cung cấp cho ứng dụng toàn cầu của tôi một chủ đề độc đáo. Hiện nay, tôi đã thực hiện một số mã trong App Đại biểu của tôi để cung cấp cho các thanh menu ứng dụng tùy chỉnh:Loại bỏ UIAppearance Tùy chỉnh Nền NavBar cho UIPopoverController

UIImage *navBarImage = [[UIImage imageNamed:@"navigationBar.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(7, 7, 7, 7)]; 
[[UINavigationBar appearance] setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault]; 

này hoạt động tốt và thay đổi tất cả các thanh menu từ phong cách đơn giản của Apple để một gradient sáng. Tuy nhiên, vấn đề tôi đang gặp phải là nó đang ghi đè một số phong cách mà tôi không muốn nó. Vấn đề cụ thể của tôi là nó ghi đè lên nền thanh điều hướng trong UIPopoverController của iPad, tạo ra trải nghiệm người dùng xấu xí. Vui lòng cho tôi biết cách khắc phục.

Chỉnh sửa: Xin lưu ý rằng đây là ứng dụng toàn cầu và tôi mở bộ chọn hình ảnh thông qua UIPopoverController trên iPad và chế độ xem phương thức trên iPhone/iPod. Tôi chỉ muốn xóa nền tùy chỉnh cho navBar trên cửa sổ bật lên iPad, chứ không phải ở chế độ xem phương thức.

Làm thế nào nó hiện trông giống như: enter image description here

Làm thế nào tôi muốn nó trông giống như: enter image description here

Cảm ơn trước sự giúp đỡ của bạn, Guvvy

Trả lời

14

Hãy thử sử dụng các phương pháp +appearanceWhenContainedIn: để loại bỏ tùy chỉnh hình nền của bạn từ thanh điều hướng khi chúng được chứa trong bộ điều khiển bật lên. Một cái gì đó như thế này:

[[UINavigationBar appearanceWhenContainedIn:[UIPopoverController class], nil] setBackgroundImage:nil forBarMetrics:UIBarMetricsDefault]; 

Nó không rõ ràng từ các tài liệu cho dù thiết lập hình nền một thanh điều hướng để nil phục hồi xuất hiện-nếu mặc định của nó mà không làm việc, bạn có thể phải mất cách tiếp cận ngược lại, và cung cấp các danh sách các trình điều khiển chế độ xem vùng chứa không phải cửa sổ bật lên bạn đang sử dụng để +appearanceWhenContainedIn:.

+2

Đặt thành 'nil' đã thực hiện công việc. Cám ơn rất nhiều về sự giúp đỡ của bạn! Tôi không thể tin rằng tôi không tự mình hiểu ra điều đó. – Gavy

+0

cùng một mẹo hoạt động cho các nút, ví dụ: '[[UIBarButtonItem appearanceWhenContainedIn: [UINavigationBar class], [UIPopoverController class], nil] setBackgroundImage: nil forState: UIControlStateNormal barMetrics: UIBarMetricsDefault];' –

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