CGRectMake для разных ориентаций iphone ipad - PullRequest
1 голос
/ 20 июня 2011

Для следующего кода мне нужно установить различные позиции UIIMageView в соответствии с ориентацией iphone и ipad.

// Animated images - centered on screen
animatedImages = [[UIImageView alloc] initWithFrame:CGRectMake(
(SCREEN_WIDTH / 2) - (IMAGE_WIDTH / 2), 
(SCREEN_HEIGHT / 2) - (IMAGE_HEIGHT / 2) + STATUS_BAR_HEIGHT,
IMAGE_WIDTH, IMAGE_HEIGHT)]; 

Поскольку CGRect будет отличаться для портрета ipad, портрета iphone, ландшафта ipad и ландшафта iphone.

Как мне это сделать

if (Ipad Portrait orientation)
{ 
code with different position using CGRectMake (...............)
}
if (Iphone Portrait orientation)
{ 
code with different position using CGRectMake (...............)
}
if (Ipad Landscape orientation)
{ 
code with different position using CGRectMake (...............)
}
if (Iphone Landscape orientation)
{ 
code with different position using CGRectMake (...............)
}

Ответы [ 2 ]

3 голосов
/ 20 июня 2011

Вы можете использовать свойство interfaceOrientation UIViewController. Это даст вам одно из следующих значений:

UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight

Ваш код будет выглядеть так:

if (self.interfaceOrientation == UIInterfaceOrientationPortrait)
{
    ...
}
else if    // etc.
0 голосов
/ 20 июня 2011

Вы можете различать iPhone и iPad с помощью

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
     // The device is an iPad running iPhone 3.2 or later.
}
else
{
     // The device is an iPhone or iPod touch.
}

, а вы можете различать книжный и альбомный режим с помощью

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation))
{
     // The device is in landscape.
}
else
{
     // The device is in portrait.
}

Теперь объедините это, чтобы получить настройку по своему усмотрению.1007 *

...