Как я могу динамически изменить изображение с экрана iphone 4 на iphone 5

Прошу прощения за мой английский.

В приложении, которое я пытаюсь разработать в первом представлении, у меня есть набор из 4 изображений, один баннер и одна панель вкладок, которые я хочу полностью покрыть размером экрана. Для 3,5-дюймовых iPhone проблем нет, но проблемы начинаются с 4-дюймовых iPhone. На данный момент я использую автомакет, и каждое изображение имеет ограничение на верхний супервизор, но я полагаю, что это не лучшее решение для решения моей проблемы на самом деле, которое вызывает белое свободное пространство между изображениями и панелью вкладок в 4-дюймовом iphone. взгляды.

Что, по вашему мнению, является лучшим решением для решения этой проблемы? Можно ли растянуть изображения и изменить их размер, чтобы полностью покрыть экран? Или лучше иметь два разных набора изображений, которые загружаются в соответствии с размером экрана устройства?

Другая идея, которая у меня есть, состоит в том, чтобы использовать изображения с правильным размером для iphone 4-inch и когда они отображаются в iphone 3,5-inch, частично закрыты, как в нижней части этого примера:

http://www.manuelragazzini.it/microfoni.jpg

Ниже я публикую пример своей ситуации и то, что я хотел бы получить в результате (в 3,5-дюймовом также есть панель навигации, но она программно скрыта, поэтому представление идеально)

http://www.manuelragazzini.it/domanda.jpg


person Manuel Ragazzini    schedule 27.04.2013    source источник


Ответы (2)


Что я думаю, лучше, если вы предоставите два отдельных файла пера для 3,5 и 4-дюймового дисплея. Да, я знаю, что это увеличит ваши усилия, но да, в будущем код станет более управляемым. Вам просто нужно предоставить отдельные перья.

Вы можете использовать следующий метод для динамической загрузки пера каждый раз для требуемого размера.

-(void)pushViewController:(UIViewController*)viewController withNib:(NSString*)nibName
{


 if(nibName){

    nibName=[self getNibNameForNib:nibName];

    viewController=[viewController initWithNibName:nibName bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
}

}


-(NSString*)getNibNameForNib:(NSString *)nibName
{
NSString *newNibName=nil;

if([self isIphone5Retina4InchDisplay]){
    newNibName=[nibName stringByAppendingString:@"-568h"];
}

if(newNibName && [[NSBundle mainBundle] pathForResource:newNibName ofType:@"nib"] != nil)
{
    //if iphone 5 and nib is also present for that resolution.
    nibName=newNibName;
}

return nibName;
}

/**
 Method to get if device is 4 inch iphone 5 retina device or not.
 */
-(BOOL)isIphone5Retina4InchDisplay
{   

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
    return YES;
} else {
    // code for 3.5-inch screen
    return NO;
  }
}

ПРОСТО НАзовите 4-ДЮЙМОВЫЙ NIB RETINA как LoginViewController-568h.xib, т.е. добавьте суффикс -568h. Используйте этот метод pushViewController каждый раз для отправки нового контроллера представления. Вы можете написать этот метод в контроллере базового представления.

person Avtar Guleria    schedule 01.05.2013
comment
Хорошо, я использовал два разных набора изображений с разными размерами и адаптировал их к экрану без автомакета. - person Manuel Ragazzini; 03.06.2013

Я бы выбрал 2 набора изображений для вашего примера с микрофоном, просто потому, что если вы хотите, чтобы между вкладкой и микрофоном был пробел, это то, что вам нужно.

Вы можете реализовать это, проверив модель iPhone в своем коде и, таким образом, загрузив соответствующее изображение.

Если у вас мало места на диске (не может быть несколько изображений моделей iPhone), то это может сделать метод изменения размера.

person lovethebomb    schedule 27.04.2013
comment
Извините, но мой английский очень плохой, и, возможно, вы не поняли, что я имел в виду. Мне не нужно пустое пространство, а изображение микрофона предназначено для демонстрации того, что я имел в виду, когда писал, что изображения .... отображаются на 3,5-дюймовом iphone и частично закрыты. - person Manuel Ragazzini; 27.04.2013