2009-12-01 41 views
7

Tôi có một lớp con của UIViewController xử lý UIView. Các viewcontroller được trình bày một cách modally (nó trượt lên từ dưới cùng của màn hình). Ở đầu chế độ xem, tôi đã thêm thanh điều hướng. Lưu ý rằng thanh này không được xử lý bởi bộ điều khiển điều hướng.Thay đổi kích thước UINavigationBar khi xoay

Tôi muốn làm cho thanh điều hướng thu nhỏ chiều cao khi chế độ xem quay sang chế độ ngang (tương tự như cách nó hoạt động khi nó được xử lý bởi UINavigationController). Tuy nhiên, tôi không thể thiết lập mặt nạ tự động hóa của nó thành độ cao linh hoạt trong IB, và làm như vậy trong mã khiến thanh điều hướng biến mất hoàn toàn.

Có cách nào để thực hiện việc này không? Nó được thực hiện bởi UINavigationController như thế nào?

P.S. Tôi không muốn phải dùng đến một biến đổi tỉ lệ, vì điều này sẽ làm rối tung văn bản trong tiêu đề.

EDIT: Tôi đã giải quyết nó với một chút trợ giúp, đọc câu trả lời được đăng bên dưới.

Trả lời

1

Tôi đã tìm ra giải pháp, và trong nhận thức tôi cảm thấy khá ngu ngốc. Tôi chỉ cần bao gồm lề dưới linh hoạt trong mặt nạ tự động hóa của thanh điều hướng. Tín dụng là do người sử dụng RayNewbie trong chủ đề này, trong đó chỉ cho tôi với các giải pháp:

http://discussions.apple.com/thread.jspa?messageID=8295525

+0

Xin chào, bạn có các nút trên thanh điều hướng không? Bởi vì tôi có cùng một vấn đề và, nếu tôi bao gồm lề dưới linh hoạt trong mặt nạ tự động hóa của thanh điều hướng, thanh điều hướng sẽ đổi kích thước, nhưng các nút thì không. – Sefran2

+0

hãy đảm bảo thêm navBar.autoresizesSubviews = YES ;, và bạn cũng có thể cần đặt autoresizingmask cho các nút thanh điều hướng của mình –

+1

Bạn có đăng giải pháp của mình hay không. Liên kết bạn đã cung cấp bị hỏng. – DCorrigan

5

Thay vì đặt mặt nạ tự động hóa, tại sao bạn không chỉ kiểm tra hướng hiện tại trong chế độ xemWillAppear, cũng như trong didRotateFromInterfaceOrientation và đặt khung thích hợp?

- (void) updateNavBar { 
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
    if ((UIInterfaceOrientationLandscapeLeft == orientation) || 
     (UIInterfaceOrientationLandscapeRight == orientation)) { 
     myNavBar.frame = CGRectMake(0, 0, 480, 34); 
    } else { 
     myNavBar.frame = CGRectMake(0, 0, 320, 44); 
    } 
} 
- (void) viewWillAppear { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { 
    [self updateNavBar]; 
    // ... SNIP ... 
} 
+0

Tôi đưa cho nó một thử, nhưng nó đã không cư xử theo cách tôi muốn nó. cụ thể hơn, các mục nút thanh và tiêu đề không được chia tỷ lệ, vì vậy màn hình đầu đã tắt. Ngoài ra, thanh điều hướng chính nó đã không thực sự quy mô, do đó, gradient đã tắt. Tôi sẽ cố gắng làm một số thay đổi kích thước thủ công của subview, và xem nếu nó hoạt động ... –

+0

Tôi đã thử sử dụng các biến đổi của các loại ob subview, nhưng tôi không thể làm cho nó trông đẹp. –

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