Не удается правильно повернуть переведенный UIView на iPad - PullRequest
0 голосов
/ 06 февраля 2011

У меня есть UIViewController, в котором есть два UIViews, чей макет (установленный в Интерфейсном Разработчике) выглядит примерно так (пурпурный цветной вид - это вид по умолчанию UIViewController):

enter image description here

и я добавил основной вид в корневой вид, получив этот эффект (не показывая более темный вид, поместив его frame внизу):

enter image description here

Сейчаскогда устройство вращается, я получаю следующее:

enter image description here

, тогда как я хотел бы скрыть более темный вид.Это код, который я использую, чтобы скрыть его, когда он появляется (я использую его в методе viewDidLoad):

- (void)hideAll:(float)time{
        CGRect hiddenFrame = CGRectMake(0, 1024, self.view.frame.size.width, self.view.frame.size.height);
        [self.view setFrame:hiddenFrame];
        [self.view setNeedsDisplay];
}

и он работает, но когда я вызываю его вариант при вращении (в willRotateToInterfaceOrientation:duration:) ничего не происходит:

    CGRect hiddenFrame = CGRectMake(0, 748, self.view.frame.size.width, self.view.frame.size.height);
    [self.view setFrame:hiddenFrame];
    [self.view setNeedsDisplay];

Чего мне не хватает?я должен установить какое-либо другое свойство представления в Интерфейсном Разработчике?

ОБНОВЛЕНИЕ

Мне кажется, что система координат не изменяется после того, как устройство было повернуто (то естьначало координат, заданное в верхнем левом углу в портретном режиме, станет верхним правым после вращения по часовой стрелке в ландшафтном режиме)

Ответы [ 3 ]

1 голос
/ 06 февраля 2011

Проверьте свои стойки и пружины в IB. Возможно, когда вы выполняете автоматический поворот, распорка, фиксирующая вас в верхней части экрана, перемещает вашу рамку обратно в верхнюю часть.

Попробуйте добавить свой код в метод didRotateToInterfaceOrientation, чтобы он мог работать после поворота.

0 голосов
/ 12 февраля 2011

С проблемой, с которой я столкнулся, можно столкнуться двумя способами (надеюсь, это может сэкономить время для кого-то в будущем):

  • с использованием UIViewcontroller (загруженного из xib) и только его представления в качестве вращающегося представления, это моя первоначальная попытка решить эту проблему. В этом случае вам необходимо программно установить рамку для вида, когда вы хотите скрыть его, и при этом вы должны учитывать, что система координат для контроллера остается нетронутой и не вращается (т. Е. Она всегда создается из тот же угол)
  • с использованием UIView (загруженного из xib) внутри уже существующего UIViewcontroller, таким образом, представление будет автоматически вращаться и изменять его размер, и вам не придется принимать во внимание правильное значение координат при каждом повороте (это, безусловно, самый простой способ)
0 голосов
/ 06 февраля 2011

Почему вы меняете рамку, чтобы скрыть ее, а не просто

[self.view setHidden:YES];

Во-вторых, вы должны попытаться установить панель «Авторазмер» для обработки изменений ориентации, а не путемкадр зрения.

надеюсь, я вас правильно понял.

шани

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