2010-03-31 5 views
6

У меня есть приложение со многими видами. Я хочу, чтобы только несколько видов могли поворачиваться в горизонтальном направлении, когда устройство вращается. Я узнал, что не могу использовать (BOOL)shouldAutorotateToInterfaceOrientation, потому что это приведет к повороту каждого вида в моем приложении. Я нашел решение этой проблемы здесь, в Stack Overflow, но теперь у меня есть еще одна проблема.Изменение размера изображения на iPhone при вращении

Вид поворачивается, когда я поворачиваю устройство, но он все еще показывает вид, как будто он все еще находится в портретном режиме (прямо вверх и вниз). Верх и низ изображения отрезаны. Есть ли способ поворачивать представление, а также корректировать его размер, чтобы он соответствовал новой ориентации? Я также нашел this, но не смог заставить его работать.

Вот мой код для этой точки зрения:

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

ответ

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/

+0

Приложение показывает пользователю кучу кнопок, которые идут в отдельные виды. Каждая кнопка открывает представление, в котором есть UIWebView. Похоже на довольно простое приложение, которое было бы легко заставить веб-страницу вращаться, но это занимает больше времени, чем я ожидал. Я в основном хочу, что Safari делает на пару просмотров. Я уже рассмотрел пример Clock, но использует код mustAutorotateToInterfaceOrientation, который вращает все представления, а не только те, которые я хочу. Создание отдельных представлений для портретных и ландшафтных звуков, подобных тому, как это могло бы работать, но не могло бы перезагрузить веб-сайт, на котором в данный момент находится пользователь? – 2010-04-01 17:35:30

+0

Вы должны иметь возможность поддерживать состояние каким-либо образом: либо с переменной хранением, какая веб-страница просматривается, либо путем создания динамического интерфейса UIWebView (а не в визуальном дизайнере) и добавления его к вашим представлениям по мере необходимости (при ротации) , –

+0

Веб-просмотры - это ссылки на страницу, где пользователь может войти в систему и посмотреть на их банковскую активность. Информация. Даже если я сохраню веб-сайт, на котором они находятся, он, скорее всего, снова их отключит или (поскольку информация предоставляется динамически не на отдельных веб-страницах), он не будет отображаться там, где они были раньше. Мне действительно нужен способ повернуть веб-представление в альбом так же, как shouldAutorotateToInterfaceOriention ... просто не на каждом представлении. Разочарование. – 2010-04-01 18:30:23

Смежные вопросы