Как создать вид, чей кадр зависит от ориентации - PullRequest
0 голосов
/ 13 августа 2011

Рассмотрим вид, который должен быть выровнен по нижней части экрана и ширина которого должна заполнять экран.

Кроме того, высота вида зависит от ориентации. В портретной ориентации высота вида должна составлять 200 пикселей, а в альбомной - 100 пикселей.

Каков наилучший способ сделать это, не предполагая что-либо о размере родительского представления (то есть: не знаю, имеет ли оно строку состояния или нет, может быть, есть панель вкладок и т.

Это мой текущий код, который не работает:

- (void)viewDidLoad
{
    [super viewDidLoad];
    myView = [[UIView alloc] init];
    CGSize myViewSize = CGSizeMake(self.view.frame.size.width, 200);
    // Align bottom
    float myViewY = self.view.frame.origin.y + self.view.frame.size.height - myViewSize.height;
    myView.frame = CGRectMake(0, myViewY, myViewSize.width, myViewSize.height);
    myView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
    myView.backgroundColor = [UIColor redColor];
    [self.view addSubview:myView];
}


- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
    BOOL landscape = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
    myView.frame = CGRectMake(myView.frame.origin.x, myView.frame.origin.y, myView.frame.size.width, landscape ? 100 : 200);
}

1 Ответ

0 голосов
/ 13 августа 2011

Попробуйте использовать объект UIWindow, как указано ниже:

[[UIApplication sharedApplication] keyWindow].screen.applicationFrame.size.height

Документация Apple для applicationFrame выглядит следующим образом:

Это свойство содержит границы экрана минус область, занятая строкой состояния, еслиэто видно.Использование этого свойства является рекомендуемым способом получения начального размера окна вашего приложения.Прямоугольник указан в точках

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