2008-10-23 35 views
9

Tôi đang sử dụng một bộ điều khiển chuyển hướng, và tôi đã theo phong cách thiết lập để:Navigation khiển Transparent Bar Phong cách không hoạt động

navController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 

Nhưng khi tôi chạy chương trình của tôi, bộ điều khiển chuyển hướng có vẻ như nó nằm trên nền trắng, không phải nền của tôi. Khi tôi đẩy một bộ điều khiển, trái hoặc phải, tất cả chế độ xem của tôi, chế độ hiện tại, sẽ dịch chuyển lên trên cùng chính xác kích thước của thanh điều hướng. Và đó là nơi tôi có thể nhìn thấy nền của mình thông qua thanh điều khiển điều hướng. Bất kỳ ý tưởng? Khi barStyle của tôi được đặt thành mờ, mọi thứ đều ổn. Tôi đã suy nghĩ về thiết lập khung nhìn của tôi một giá trị âm 'y', nhưng tôi nghĩ rằng nên có một cách thanh lịch hơn.

Trả lời

9

Tôi tin rằng UINavigationController giả định rằng khung xem bộ điều khiển của bạn không bao gồm vùng bên dưới thanh điều hướng.

UIBarStyleBlackTranslucent thường được sử dụng cho UIToolbar, vì vậy Apple có thể không làm cho nó dễ dàng để sử dụng nó độc đáo với UINavigationBar. Có thể bạn sẽ cần phải từ bỏ UINavigationController, hoặc bắt đầu hack các khung (cẩn thận với các phép quay), nếu bạn muốn render một cách tin cậy dưới vùng thanh.

Ngoài ra, nếu bạn muốn ẩn thanh điều hướng sau vài giây, bạn sẽ có nhiều thời gian dễ dàng hơn nếu bạn làm mờ dần (như ứng dụng Ảnh) thay vì cố gắng trượt nó lên. như Mobile Safari). Tôi tin tưởng vào điều đó ... điều đó đã giúp tôi thời gian để tìm hiểu một cách khó khăn.

+1

Đây không phải là trường hợp trong iOS 5 & 6. Kiểm tra câu trả lời của tôi bên dưới với hình ảnh trong suốt và mờ = YES cho phép nội dung chảy bên dưới thanh. – Resh32

1

Trình điều khiển điều hướng sẽ tắt tổng hợp tọa độ của tất cả các bản phụ đề để chúng vẽ bên dưới thanh điều hướng.

Kéo khung của khung nhìn vào miền y phủ định để nó vẽ dưới thanh điều hướng.

+0

Đã thử điều này, không có may mắn. Tôi sẽ tiếp tục thử nghiệm, vì điều này có vẻ là cách rõ ràng. – carlos

+0

Điều này không hoạt động vì UINavigationController * thực sự * muốn quản lý kích thước của khung nhìn mà nó quản lý trên chính nó, vì vậy nó có xu hướng đặt lại khung theo ý muốn. Bạn có thể thử đặt lại khung của chế độ xem bạn định trượt dưới * sau * chế độ xem đó đang hiển thị trên màn hình, nhưng Mileage của bạn có thể thay đổi. – rpj

0

Nếu bạn đặt điều hướng của trình điều hướng navBar thành minh bạch trong ủy nhiệm ứng dụng của bạn đủ sớm (Nó làm việc cho tôi trước khi thêm bộ điều hướng vào cửa sổ), nó sẽ tự động chuyển chế độ xem của bạn lên phía dưới thanh điều hướng.

Rất tiếc, nó cũng không thay đổi chế độ xem của bạn bên dưới thanh trạng thái. Rất tiếc, có vẻ như bạn cần triển khai phiên bản UINavigationController của riêng bạn. May mắn thay, nó không phải là quá xấu như UINavigationBar là khá tái sử dụng.

+0

Vâng, có thể giải pháp là, triển khai phiên bản của riêng tôi. – carlos

2

Tôi đã gặp vấn đề tương tự và tôi đã giải quyết vấn đề bằng cách làm nền của chế độ xem gốc giống như chế độ xem của tôi. Khu vực màu trắng phía sau thanh điều hướng hóa ra là chế độ xem gốc.

1

Bạn cần đặt kiểu bar trong tệp info.plist của bạn để bù đắp mọi thứ chính xác.

Tuy nhiên, tôi chưa thử vì phiên bản 2.1 f/w đã được phát hành, nhưng khi tôi thử phiên bản 2.0, tôi thấy rằng cài đặt bị mất sau khi xoay từ dọc sang ngang.

3

Tôi chạy vào vấn đề này cùng (trong 3.1.3) và trong khi bạn không thể thiết lập các phong cách thanh sau khi Navigationbar đã được thiết lập, bạn có thể thiết lập tintColor và các giá trị mờ bất cứ khi nào bạn thích:

self.navigationController.navigationBar.tintColor = [UIColor blackColor]; 
    self.navigationController.navigationBar.translucent = YES; 

Sẽ tạo thanh 'blackTranslucent', tôi thay đổi navigationBar khi tôi đẩy một số bộ điều khiển xem nhất định vào ngăn xếp.

1

cố gắng sử dụng tính năng này, có thể sẽ hữu ích.

_topToolBar.barStyle = UIBarStyleBlackTranslucent; 
_topToolBar.alpha = 0.3; 
1

Tôi đã gặp vấn đề tương tự.Tôi đã giải quyết!

ImageViewExtendController *detailImageController = [[ImageViewExtendController alloc] init]; 
[detailImageController loadImage:url]; 
[self.navigationController pushViewController:detailImageController animated:YES]; 
0

Hãy thử điều này:

self.tabBarController.tabBar.superview.backgroundColor = [UIColor blackColor]; 
4
self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.169 green:0.373 blue:0.192 alpha:0.9]; 
self.navigationController.navigationBar.translucent = YES; 

Lưu ý:

  1. Không sử dụng self.navigationBarStyleself.navigationBarTintColor thay đổi.
  2. Thêm hai câu lệnh cuối cùng vào viewDidLoad của bạn.
7

Chỉ cần sử dụng hình nền trong suốt và mờ = YES để cho phép nội dung chảy bên dưới thanh. Hoạt động trên iOS 5/6. Thêm vào viewDidLoad.

self.navigationController.navigationBar.translucent = YES; 
UIImage * backgroundImage = [UIImage imageNamed:@"spacer.gif"]; 
[self.navigationController.navigationBar setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:UIBarMetricsDefault]; 

Tôi đã đính kèm hình ảnh spacer.gif ở đây, một hình ảnh trong suốt 1px x 1px.

spacer.gif

+0

hoạt động đẹp, cảm ơn! –

+0

navigationBar.translucent = YES; là chìa khóa, cảm ơn. –

+0

Câu hỏi cũ, nhưng trên xcode 6, điều này phù hợp nhất với tôi – Glavid

0

Thay đổi Mở rộng tùy chọn Edges trong viewControllers con

Như ví dụ, trong trình soạn thảo xcode, đi đến con viewController đầu tiên của bạn và unset các tùy chọn:

Extend Edges; 
    Under Top Bars; 
    Under Bottom Bars; 
    Under Opaque Bars; 

Bằng cách này bạn con ViewController sẽ không bố trí bắt đầu bên dưới thanh trạng thái của bộ điều khiển điều hướng, không phải thanh tabbar hoặc thanh công cụ

hy vọng nó có thể giúp bất cứ ai

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