Кодирование для экрана iphone 5

Я взял универсальный проект. Я кодировал для экрана iPhone 5, но он не обнаруживает его.

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    //ui for ipad
}
else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height == 568) {
        tableView.frame = CGRectMake(0, 40, 320 ,508);
    }
    else {
        tableView.frame = CGRectMake(0, 40, 320 ,420);
    }
}

Это не работает, хотя. Когда я отлаживаю код на iPhone 5 screenBounds = 320 * 480.

Куда я иду не так?

7 ответов

Это так просто обнаружить экран iPhone5, просто напишите

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

в вашем файле.pch.... и вы можете дополнительно проверить экран iPhone5, как if(IS_IPHONE5),

У меня этот код отлично работает

  #define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

    if (IS_IPHONE_5)
        {
 //iphone 5
    }

Вы добавляете Splash Screen для iphone 5.Default-568h@2x.png файл, тогда он работает нормально

Выбери свой UITableView от IB и выберите размер как Retina 4 для всех экранов, даже в главном окне XIB-файла. Это отлично работает даже на iphone 4.

введите описание изображения здесь

Попробуйте этот код::

if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    [tableView setFrame:CGRectMake(0, 40, 320 ,508)];
}
else if ([[UIScreen mainScreen] bounds].size.height == 480)
{
    [tableView setFrame:CGRectMake(0, 40, 320 ,420)];
}

Надеюсь, это тебе поможет.

Благодарю.

Я использовал этот код для проверки устройства iPhone 5.

float scrnheight = [[UIScreen mainScreen] bounds].size.height ;

if(scrnheight == 568.0f)
{
    self.isIphone5 = true;
}

Попробуйте использовать это, чтобы обнаружить iPhone 5 вместо этого:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
   CGSize theHeight = [[UIScreen mainScreen] bounds].size;
   if(theHeight.height == 568) {
        // iPhone 5
        tableView.frame = CGRectMake(0, 40, 320 ,508);
   }
   else {
        // iPhone 4
        tableView.frame = CGRectMake(0, 40, 320 ,420);
   }
}

В качестве альтернативы вы можете определить это:

#define IS_IPHONE5 (([[UIScreen mainScreen] bounds].size.height-568)?NO:YES)

Который вы можете использовать повторно всякий раз, когда вам нужно выяснить, iPhone это или нет.

Другие вопросы по тегам