2009-02-10 30 views
7

Tôi có ứng dụng dựa trên thanh tab.Cách xoay chế độ xem ngang trong ứng dụng tabbar

Tôi xây dựng 2 chế độ xem, một chế độ xem ở chế độ dọc và một chế độ khác ở chế độ ngang trong Trình tạo giao diện.

Bây giờ, tôi muốn một cái gì đó giống như ứng dụng iPod. Tôi muốn chế độ xem ngang ở chế độ toàn màn hình và ẩn thanh tab & thanh trạng thái.

tôi làm để làm việc cơ bản của việc này:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration { 
    if (self.landscape) { 
     if (toInterfaceOrientation == UIInterfaceOrientationPortrait) 
     { 
      self.view = self.portrait; 
      self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(360)); 
     } 
     else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = self.landscape; 
      self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90)); 
     } 
     else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) 
     { 
      self.view = self.landscape; 
      self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
     } 
     else 
     { 
      self.view = self.portrait; 
      self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-180)); 
     } 
    } 
} 

Nhưng tất cả làm việc lộn xộn. Chế độ xem ngang không chính xác lấp đầy khu vực và các điều khiển được đặt ở vị trí sai, khác với desingned trước.

Ngoài ra, tôi vẫn chưa tìm ra cách để che giấu mọi thứ khác ...

Trả lời

1

Bạn có thể ẩn thanh trạng thái bằng cách gọi

setStatusBarHidden:(BOOL) 

trên một tài liệu tham khảo UIApplication, như vậy.

- (void)applicationDidFinishLaunching:(UIApplication *)application { 

[application setStatusBarHidden:YES]; 

} 

Để thoát khỏi thanh tabbar bạn có thể làm cho một cửa hàng tham khảo trong giao diện người xây dựng để mã của bạn và gọi

[myUITabBar removeFromSuperview]; 

Điều đó có thể làm việc, mặc dù tôi đã không kiểm tra nó, như đối với người kia câu hỏi, tôi không phải là 100%, chưa giải quyết được vấn đề trước đây.

1

Ok, đây là như xa tôi đặt này để làm việc:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
           duration:(NSTimeInterval)duration { 
    if (self.landscape) { 
     if (toInterfaceOrientation == UIInterfaceOrientationPortrait) 
     { 
      self.view = self.portrait; 
      //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(360)); 
     } 
     else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) 
     { 
      self.view = self.landscape; 
      //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-90)); 
     } 
     else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) 
     { 
      self.view = self.landscape; 
      //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); 
     } 
     else 
     { 
      self.view = self.portrait; 
      //self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(-180)); 
     } 
    } 
} 

Bây giờ, trong appdelegate:

- (void) didRotate:(NSNotification *)notification 
{ 
    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 
    [UIView beginAnimations:nil context:NULL]; 

    if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) 
    { 
     [tabBarController.view setAlpha:0.0]; 
     [tabBarController.view removeFromSuperview]; 

     [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; 
    } else { 
     [tabBarController.view setAlpha:1.0]; 
     [[UIApplication sharedApplication] setStatusBarHidden:NO animated:NO];  
    } 
    [UIView commitAnimations]; 
} 

Nhưng sau đó như thế nào thiết lập giao diện hiện tại và làm thế nào khôi phục lại thanh tabbar?

1

Khi tôi nhìn vào ứng dụng iPod, có vẻ như với tôi rằng chế độ xem TabBarController không bị thay thế hoặc sửa đổi theo bất kỳ cách nào. Tôi nghĩ rằng chỉ có một chuyển đổi mờ dần giữa chế độ xem tabbarcontroller và chế độ xem luồng.

Nếu tôi là bạn, tôi sẽ cố gắng (không chắc chắn nếu điều này có thể làm việc) với một bộ điều khiển coverflow, với quan điểm của nó hiển thị trên đầu trang của tabBarController của xem. Nếu có thể ngăn tabBarController tự động kiểm tra chế độ xem của nó, nhưng tại thời điểm đó, tôi sẽ mờ dần chế độ xem của nó và mờ dần trong chế độ xem luồng, sẽ chỉ nằm ngang.

Tôi không biết liệu statusBar có hành vi thích hợp không, và tôi để rất nhiều chi tiết để bạn phân loại, nhưng trong mọi trường hợp, tôi nghĩ sẽ có hai bộ điều khiển riêng biệt cho thấy trong cảnh quan, khác (tabBar) trong bức chân dung.

Hy vọng rằng sẽ giúp bạn.

1

Dường như có một số lượng người lập trình muốn có mục thanh tab đưa họ đến chế độ xem toàn màn hình (không có thanh trạng thái, không có thanh tab) và sau đó quay lại.

Tôi đã đăng câu hỏi về việc liệu điều này có thực sự có thể có trên diễn đàn nhà phát triển Apple hay không, nhưng chưa có câu trả lời.

Tại sao điều này khó? (xin lỗi, một câu hỏi mới? Có vẻ như một số thứ khá rõ ràng không nên khó) Không ai tôi đã tìm thấy trực tuyến nhưng có một câu trả lời rõ ràng cho điều này.

5

Xem mã mẫu "AlternateViews" của Apple.

Ý tưởng cơ bản là bạn có thể phát hiện hướng vật lý của thiết bị với thông báo và sau đó kích hoạt bộ điều khiển chế độ xem mới "vừa phải" và yêu cầu toàn màn hình. Bạn vô hiệu hóa xoay vòng giao diện bằng cách sử dụng shouldAutorotate ... trả về CÓ chỉ cho một hướng, vì bạn đang làm tất cả điều này theo cách thủ công với thông báo. Khi bạn thay đổi hướng vật lý, bộ điều khiển chế độ xem phương thức của bạn được trình bày hoặc loại bỏ.

+0

Cảm ơn bạn vì điều này !! – mobius

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