2010-03-31 29 views
6

Tôi có một ứng dụng có nhiều chế độ xem. Tôi chỉ muốn một vài chế độ xem có thể xoay ngang khi xoay thiết bị. Tôi phát hiện ra rằng tôi không thể sử dụng (BOOL)shouldAutorotateToInterfaceOrientation vì điều đó sẽ xoay mọi chế độ xem trong ứng dụng của tôi. Tôi tìm thấy một giải pháp cho vấn đề này ở đây trên Stack Overflow nhưng bây giờ tôi có một vấn đề khác để giải quyết.Thay đổi kích thước chế độ xem trên iPhone khi xoay

Chế độ xem xoay khi tôi xoay thiết bị nhưng thiết bị vẫn hiển thị chế độ xem như thể nó vẫn ở chế độ dọc (thẳng lên và xuống). Phần trên cùng và dưới cùng của chế độ xem bị cắt. Có cách nào để xoay chế độ xem và cũng điều chỉnh kích thước của nó để vừa với hướng mới không? Tôi cũng tìm thấy this nhưng không thể làm cho nó hoạt động.

Dưới đây là mã của tôi cho quan điểm cho rằng:

@implementation businessBank 
@synthesize webView, activityIndicator; 


- (void)viewDidLoad { 

    [super viewDidLoad]; 
    NSString *urlAddress = @"website_url"; 

    NSURL *url = [NSURL URLWithString:urlAddress]; 
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 

    [webView loadRequest:requestObj]; 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(didRotate:) 
               name:UIDeviceOrientationDidChangeNotification 
               object:nil]; 

} 
- (void)didRotate:(NSNotification *)notification { 

    UIDeviceOrientation orientation = [[notification object] orientation]; 

    if (orientation == UIDeviceOrientationLandscapeLeft) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI/2.0)]; 
    } else if (orientation == UIDeviceOrientationLandscapeRight) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI/-2.0)]; 
    } else if (orientation == UIDeviceOrientationPortraitUpsideDown) { 
     [self.view setTransform:CGAffineTransformMakeRotation(M_PI)]; 
    } else if (orientation == UIDeviceOrientationPortrait) { 
     [self.view setTransform:CGAffineTransformMakeRotation(0.0)]; 
    } 
} 

Trả lời

3

Trừ khi bạn có một ứng dụng rất cơ bản mà trải dài để phù hợp với định hướng, tự động thay đổi kích thước sẽ không làm việc tốt cho bạn anyways - bạn thực sự cần phải tạo hai quan điểm riêng biệt cho hai hướng.

Để được trợ giúp về autoresizing quan điểm, bạn có thể kiểm tra hướng dẫn này:

http://theappleblog.com/2009/04/08/iphone-dev-sessions-how-to-make-an-orientation-aware-clock/

Để sử dụng phương pháp mạnh mẽ hơn của chuyển đổi quan điểm, hướng dẫn này sẽ giúp bạn ra ngoài:

http://icodeblog.com/2008/08/03/iphone-programming-tutorial-transitioning-between-views/

+0

Ứng dụng hiển thị cho người dùng một loạt các nút đi đến các chế độ xem riêng biệt. Mỗi nút sẽ mở ra một khung nhìn có UIWebView trong đó. Có vẻ như một ứng dụng khá đơn giản sẽ dễ dàng để có trang web xoay vòng, nhưng nó mất nhiều thời gian hơn tôi mong đợi. Về cơ bản tôi muốn những gì Safari làm trên một vài quan điểm. Tôi đã xem ví dụ Đồng hồ trước đây nhưng sử dụng mã shouldAutorotateToInterfaceOrientation để quay mọi chế độ xem không chỉ các chế độ xem tôi muốn. Tạo các chế độ xem riêng biệt cho âm thanh chân dung và phong cảnh giống như nó có thể hoạt động nhưng sẽ không đặt lại trang web mà người dùng hiện đang sử dụng? –

+0

Bạn có thể duy trì trạng thái theo một cách nào đó, với biến lưu trữ trang web nào đang được xem hoặc bằng cách tạo UIWebView động (thay vì trong trình thiết kế trực quan) và thêm nó vào chế độ xem của bạn khi cần (khi xoay) . –

+0

Các bản xem trước trên web là liên kết đến trang nơi người dùng có thể đăng nhập và xem xét ngân hàng của họ. thông tin. Ngay cả khi tôi lưu trữ trang web mà họ đang truy cập, rất có thể họ sẽ đăng xuất lại hoặc (vì thông tin được cung cấp động không phải trên các trang web riêng), nó sẽ không hiển thị ở nơi trước đây. Tôi thực sự chỉ cần một cách để xoay webview để cảnh quan chính xác như shouldAutorotateToInterfaceOriention không ... chỉ cần không phải trên mỗi xem duy nhất. Những thứ bực dọc. –

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