Как определить координаты нижнего правого угла iPad в альбомном режиме?

Я пытаюсь разместить подпредставление (buttView) в правом нижнем углу главного окна (из кода, а не из IB).

Следующий код работает

const float bottom = self.frame.size.height;
const float left   = self.frame.size.width;
NSLog(@"bottom=%.1f left=%.1f", bottom, left);
CGSize bz = buttView.frame.size;
CGRect rc = CGRectMake(left-bz.width, bottom-bz.height, bz.width,bz.height);
buttView.frame = rc;
[self addSubview:buttView];

Но я запутался, потому что, согласно сообщению журнала, bottom = 1004.0 и left = 768.0, а iPad находится в ландшафтном режиме! (Ширина должна быть больше, чем высота!??)

Более того, если я отключу "autoresize subviews" в IB, то код будет работать, только если я поменяю местами bottom а также left (но он не работает идеально, потому что истинная ширина равна 1024, а не 1004).

У меня вопрос: есть ли элегантный способ определить местоположение нижнего правого угла вида, когда вид находится в ландшафтном режиме?

1 ответ

Решение

Если вы посмотрите на эти значения в viewWillLayoutSubviews и используете рамки вместо фрейма, вы получите правильные значения, и они будут обновлены, если вы поверните устройство.

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