6

我有一个有很多视图的应用程序。我希望只有几个视图能够在设备旋转时旋转到横向。我发现我不能使用(BOOL)shouldAutorotateToInterfaceOrientation,因为这会旋转我的应用程序中的每个视图。我在 Stack Overflow 上找到了这个问题的解决方案,但现在我有另一个问题要处理。

当我转动设备时视图会旋转,但它仍然显示视图,就好像它仍然处于纵向模式(垂直向上和向下)。视图的顶部和底部被截断。有没有办法让视图旋转并调整其大小以适应新的方向?我也发现了这个,但无法让它工作。

这是我对该视图的代码:

@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)];
    }
}
4

1 回答 1

3

除非您有一个非常基本的应用程序可以拉伸以匹配方向,否则自动调整大小无论如何都不适合您 - 您确实需要为两个方向创建两个单独的视图。

有关自动调整视图大小的帮助,您可以查看本教程:

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

要使用更强大的切换视图方法,本教程应该可以帮助您:

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

于 2010-03-31T19:17:31.110 回答