Должны ли мы использовать 2 разных изображения или одно изображение для альбомного и портретного режима - PullRequest
1 голос
/ 04 декабря 2011

Я делаю приложение для iPad, в котором мы добавили два изображения: одно для альбомной ориентации, а другое для портретного режима, для которого я написал код.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {  
// in this method we have called landscape and portrait frames basing on the
// status bar rotation if it is turned to landscape then the landscape image
// is called and the textfields frames are set else portrait image is set and
// then the textfield frames are set on to it.  
}  

Может ли кто-нибудь выручить меня, сказав, что это правильный способ использования 2 разных изображений, или мы должны использовать только 1 изображение как для пейзажа, так и для портрета. Если так, как мы можем использовать эти только одно изображение? Мое приложение падает из-за этого. Пожалуйста, помогите мне.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 04 декабря 2011

Вам, вероятно, лучше всего иметь два изображения, и вы можете сделать следующее:

РЕДАКТИРОВАТЬ: Я добавил код, который будет гарантировать, что ваше изображение заполняет все доступное пространство.

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if((self.interfaceOrientation == UIDeviceOrientationLandscapeLeft) || (self.interfaceOrientation == UIDeviceOrientationLandscapeRight)){

[landscapeimage setHidden:NO];
[portraitimage setHidden:YES];

CGRect landscapeframe = landscapeimage.frame;
landscapeframe.origin.x = 0; // new x coordinate
landscapeframe.origin.y = 0; // new y coordinate
landscapeframe.size.width = 1024;
lanscapeframe.size.height = 768;

}

else if((self.interfaceOrientation == UIDeviceOrientationPortrait) || (self.interfaceOrientation == UIDeviceOrientationPortraitUpsideDown)){

[landscapeimage setHidden:YES];
[portraitimage setHidden:NO];

CGRect portraitframe = portraitimage.frame;
portraitframe.origin.x = 0; // new x coordinate
portraitframe.origin.y = 0; // new y coordinate
portraitframe.size.width = 768;
portraitframe.size.height = 1024;

}

Надеюсь, это поможет вам!

1 голос
/ 04 декабря 2011

Hello kinthali Согласно документации

Обработка поворотов вида

По умолчанию класс UIViewController отображает представления только в портретном режиме.Для поддержки дополнительных ориентаций необходимо переопределить метод shouldAutorotateToInterfaceOrientation : и вернуть YES для любых ориентаций, поддерживаемых вашим подклассом.Если свойства автоматического изменения размеров ваших представлений настроены правильно, это может быть все, что вам нужно сделать.Тем не менее, класс UIViewController предоставляет дополнительные возможности для реализации дополнительных поведений по мере необходимости.

Чтобы временно отключить функции, которые не нужны или могут вызвать проблемы во время изменения ориентации, вы можете переопределить willRotateToInterfaceOrientation: duration: метод и выполнение там необходимых действий.Затем вы можете переопределить метод didRotateFromInterfaceOrientation :: и использовать его для повторного включения этих объектов после завершения изменения ориентации.

В соответствии с вашим вопросом все, что вам нужно сделать, это вернуть Дадля поддерживаемой ориентации в shouldAutorotateToInterfaceOrientation, и вы можете вызвать функцию для установки фонового изображения (два разных изображения для книжной и альбомной ориентации) следующим образом

[self updateBackgroundImageForOrientation:PROBABLE_INTERFACE_ORIENTATION];

В реализации метода вы можете обновить фоновое изображение.Таким образом, вы можете реализовать желаемое поведение.Поскольку вы на самом деле не опубликовали ни одного функционального кода, трудно указать причину сбоя.Вы можете отлаживать и просматривать журналы консоли для определения основной причины сбоя.

1 голос
/ 04 декабря 2011

Нет никакого вреда в использовании двух разных изображений, это просто увеличивает размер пакета изображений ... я сделал это для приложения в магазине приложений ... для приложения MNC banks ipad. Так что не навреди и пользуйся им. Мне лично это лучше, чем обрабатывать изображение и изменять его размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...