Пользовательский переход, расширяющий UIViewController влево

Я пытаюсь создать пользовательскую анимацию для отображения нового контроллера представления. Контроллер представления from — это контроллер представления, который имеет два встроенных контроллера uiview введите здесь описание изображения контроллер представления, заключенный в контроллер навигации, и первая половина анимации, которую я пытаюсь выполнить, состоит в том, чтобы заставить правый контейнер расширяться влево в полноэкранном режиме.

Когда я выполняю стандартный блок анимации UIView, устанавливая свой кадр = своему родительскому кадру, он сначала сразу устанавливает размер (игнорируя анимацию), расширяясь вправо, а затем центрирует себя.

В основном мой вопрос: есть ли у кого-нибудь предложение о том, как заставить контроллер представления расширяться строго влево с правильной скоростью? Масштаб не работает, насколько мне известно, поскольку он растягивает вид, не сохраняя соотношение сторон.


person JLoewy    schedule 17.06.2014    source источник
comment
просто продолжение кажется, что проблема связана с UINavigationController. Если я перейду к расширению левого бокового контейнера вправо, он работает, как и ожидалось.   -  person JLoewy    schedule 18.06.2014


Ответы (1)


Это можно сделать, анимировав размер или положение представлений контейнера. В тесте я настроил представления контейнеров так, чтобы левое имело ограничение по ширине (IBOutlet, widthCon), а правый контейнер имел ограничение длины, равное 0, относительно левого контейнера. Расширение было выполнено с помощью этого кода в родительском контроллере представления,

- (void)expandRightView {

    [UIView animateWithDuration:2 animations:^{
        self.widthCon.constant = 0;
        [self.view layoutIfNeeded];
    }];
}

Это также можно сделать, переместив вместо этого левый контейнер влево (leftCon — это IBOutlet для ограничения между левым представлением контейнера и левым краем основного представления),

- (void)expandRightView {

    [UIView animateWithDuration:2 animations:^{
        self.leftCon.constant = -self.leftContainerView.frame.size.width;
        [self.view layoutIfNeeded];
    }];
}
person rdelmar    schedule 18.06.2014