Вопрос по size, orientation, uiview, ios, frame – iOS UIView получить кадр после поворота

3

Я пытаюсь получить размер моегоUIView после изменения ориентации. На мой взгляд, контроллер я реализуюdidRotateFromInterfaceOrientation: и позвонитьsetNeedsLayout: на мой взгляд. На мой взглядlayoutSubviews метод, он пытается выполнить некоторую логику на основе своего нового размера кадра после поворота, но размер кадра не был обновлен, чтобы отразить новую ориентацию (например, он по-прежнему 768x1024 вместо 1024x768 после перемещения в альбомную ориентацию).

Как получить обновленный размер кадра?

Почему это работает ?? Remover
Сумасшедший, это исправило это для меня! Спасибо! phosphoer
Вы пытались использовать границы вместо? Pochi

Ваш Ответ

2   ответа
2

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

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    } else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
    }
}
Проблема с этим для меня заключается в том, что рассматриваемое представление находится на несколько уровней ниже контроллера представления (как в подвиде подпредставления представления viewcontroller). Я не уверен, каким образом я мог бы получить эту информацию от контроллера представления к представлению разумным способом. phosphoer
3

Просто собираюсь ответить тем, что сказал Луис Оскар, чтобы вопрос появился как ответ. Решение состоит в том, чтобы получить доступ к "границам" свойство, а не "рамка".

Это именно то, что я искал. Спасибо!

Похожие вопросы