2013-10-27 21 views
9

Tôi đã cố gắng giữ UINavigationBar khỏi việc di chuyển/thay đổi kích thước khi gọi setNeedsStatusBarAppearanceUpdate.Giữ UINavigationBar ở cùng kích thước trong khi ẩn thanh trạng thái

Tôi muốn giữ thanh điều hướng ở độ cao 64px đầy đủ khi thanh trạng thái ẩn với hoạt ảnh.

Mọi trợ giúp sẽ được đánh giá cao!

CẬP NHẬT: Tôi có thể khắc phục sự cố này bằng cách tạo UIWindow mới và bao phủ thanh trạng thái.

+0

không nghĩ có bất kỳ API nào cho điều đó. Có thể bạn sẽ phải thay đổi kích thước cửa sổ của mình, có thể đặt 'wantFullScreenLayout' thành' NO', v.v. – nielsbot

+0

'wantFullScreenLayout' là [không được chấp nhận] (https://developer.apple.com/library/ios/documentation/userexperience/conceptual/ TransitionGuide/AppearanceCustomization.html) trong iOS 7. –

+0

Tôi nghĩ rằng tiêu đề của bạn cho thấy một sự hiểu lầm về phía bạn. Điều hướng không giữ cùng chiều cao (44 điểm) khi bạn ẩn thanh trạng thái, nó chỉ là thanh trạng thái (20 điểm) và thanh điều hướng xuất hiện là một chế độ xem, khi thực tế chúng có hai chế độ xem khác nhau. Bạn đang cố gắng làm điều này với một bộ điều khiển chuyển hướng, hoặc bạn có một thanh điều hướng độc lập? – rdelmar

Trả lời

0

tôi đã cùng một vấn đề, và có thể sửa chữa nó thay đổi windowLevel để UIWindowLevelStatusBar

+0

Cửa sổ 'windowLevel' nào sẽ thay đổi? –

+0

cửa sổ điều hướngBar, như thường lệ, [[UIApplication sharedApplication] keyWindow] –

+0

Không phải là cửa sổ của navigationBar 'navigationBar.window'? –

0

Bạn có thể làm điều này bằng

  1. di chuyển các thông tin đầy đủ của bộ điều khiển xem hướng giảm theo mặc định đến một 20px hạ xuống vị trí, phù hợp với chiều cao của thanh trạng thái (tức là, nó sẽ giữ nguyên cho dù thanh trạng thái được hiển thị hay không). Bạn làm điều này bằng cách thay đổi vị trí và chiều cao của khung hình.
  2. sửa thanh màu đen không mong muốn nhất mà bạn hiện có ở trên cùng bằng cách thay đổi UIWindow.backgroundColor thành bất kỳ màu nào bạn thích (màu trắng trong trường hợp bình thường).

Tôi vừa triển khai giải pháp này sau nhiều lần thất bại trong việc sửa lỗi mà bạn nhận được khi chuyển đổi giữa các bộ điều khiển chế độ xem nơi hiển thị thanh trạng thái và cột khác không hiển thị. Đây là giải pháp tốt nhất mà tôi đã tìm thấy.

Tôi đã làm 1. trong lớp con của UINavigationController. Tôi cho rằng đây là lựa chọn tốt nhất của bạn để duy trì tính nhất quán khi đi qua bộ điều khiển xem bộ điều khiển phụ. Tôi đã không kiểm tra các tùy chọn khác mặc dù (đặt nó trực tiếp trong VC phụ).

Tại sao công việc này và tại sao điều này là cách tốt nhất để đi:

Các thanh điều hướng là thực sự cao luôn 44 điểm (như bình luận đã đề cập), nhưng trên thanh trạng thái 20 điểm đẩy nó xuống. Đẩy toàn bộ lượt xem với cùng một lượng (20) xuống này, đảm bảo hành vi nhất quán nhất. Bất cứ khi nào bạn cố gắng trực tiếp thao tác với UINavigationBar, iOS sẽ có chiều dài lớn để đảo ngược thay đổi này.

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