2010-07-27 38 views
5

Trình điều khiển chế độ xem gốc của ứng dụng hỗ trợ bất kỳ hướng nào nhưng người dùng có thể điều hướng đến một bộ điều khiển chế độ xem khác chỉ hỗ trợ hướng ngang.Chiều cao thanh điều hướng của iPhone vẫn ngắn theo hướng dọc

Vấn đề cơ bản là bất kể định hướng vật lý thực tế của thiết bị, khi người dùng bật trở lại bộ điều khiển chế độ xem gốc, thanh điều hướng có chiều cao phù hợp với chế độ ngang. Tôi muốn tìm ra cách để thanh điều hướng xuất hiện với chiều cao 44 (chiều cao dọc) thay vì 32 (chiều cao ngang).

Mặc dù thanh điều hướng không được đặt ở độ cao thích hợp, UITableView của bộ điều khiển chế độ xem gốc được bù đắp chính xác (44 pixel từ đầu màn hình).

Bên -viewWillAppear quan điểm điều khiển thứ hai: Tôi thực hiện các tiêu chuẩn luân chuyển:

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenHeight, screenWidth); 
    navView.transform = CGAffineTransformIdentity; 
    navView.transform = CGAffineTransformMakeRotation(degreesToRadians(90)); 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight]; 
    } 

Bởi vì điều khiển nhìn thứ này cho phép điều hướng để điều khiển xem trực thuộc (cũng như popping sao lưu để điều khiển xem gốc), Tôi đã thêm các mục sau vào -viewWillDisappear:

if (deviceOrientation == UIDeviceOrientationPortrait) 
    { 
    UIScreen *screen = [UIScreen mainScreen]; 
    CGFloat screenWidth = screen.bounds.size.width; 
    CGFloat screenHeight = screen.bounds.size.height; 
    UIView *navView = [[self navigationController] view]; 
    navView.bounds = CGRectMake(0, 0, screenWidth, screenHeight); 
    navView.transform = CGAffineTransformIdentity; 
    navView.center = CGPointMake(screenWidth/2.0, screenHeight/2.0); 
    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait]; 
    } 

Cảm ơn bạn đã đưa ra lời khuyên về cách buộc tính toán lại chiều cao thanh điều hướng.

Trả lời

8

Không chắc chắn nếu có một cách tốt hơn, nhưng điều này đã làm việc:

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 
[[self navigationController] popViewControllerAnimated:YES]; 
[[self navigationController] setNavigationBarHidden:NO animated:NO]; 

Về cơ bản, ẩn thanh nav, bật bộ điều khiển xem và chương trình thanh nav. Một số mã ở đâu đó điều chỉnh chiều cao thanh điều hướng và mọi thứ đều ổn.

+0

Cảm ơn hoàn hảo, cách duy nhất tôi có thể làm cho nó hoạt động trở lại trong ios6 – AlexWien

+0

Còn ios10 thì sao? Tôi đã phải đối mặt với vấn đề này và giải pháp không hoạt động. – Slavcho

+0

@Slavcho. Lấy làm tiếc. Tôi không có câu trả lời. Tôi đã không hoạt động trên iOS một thời gian. – westsider

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