Ios 自定义转换将UIViewController扩展到左侧

Ios 自定义转换将UIViewController扩展到左侧,ios,animation,uiviewcontroller,transition,uiviewanimationtransition,Ios,Animation,Uiviewcontroller,Transition,Uiviewanimationtransition,我正在尝试创建一个自定义动画,以在显示中显示一个新的视图控制器。from view控制器是一个具有两个嵌入式UIViewController的视图控制器,右侧的一个是一个包含在导航控制器中的视图控制器,我正在尝试的动画的前半部分是使右侧容器扩展到左侧的全屏 当我执行标准UIView动画块设置其帧=其父帧时,它首先设置大小,通过向右展开忽略动画,然后将自身居中 基本上,我的问题是,是否有人对如何强制视图控制器以适当的速度严格向左扩展有建议?据我所知,缩放不起作用,因为它会拉伸视图而不保留纵横比。这

我正在尝试创建一个自定义动画,以在显示中显示一个新的视图控制器。from view控制器是一个具有两个嵌入式UIViewController的视图控制器,右侧的一个是一个包含在导航控制器中的视图控制器,我正在尝试的动画的前半部分是使右侧容器扩展到左侧的全屏

当我执行标准UIView动画块设置其帧=其父帧时,它首先设置大小,通过向右展开忽略动画,然后将自身居中


基本上,我的问题是,是否有人对如何强制视图控制器以适当的速度严格向左扩展有建议?据我所知,缩放不起作用,因为它会拉伸视图而不保留纵横比。

这可以通过设置容器视图大小或位置的动画来实现。在一个测试中,我设置了容器视图,使得左侧容器具有宽度约束IBOutlet、widthCon,而右侧容器对左侧容器具有0长度间隔约束。在父视图控制器中使用此代码进行了扩展

- (void)expandRightView {

    [UIView animateWithDuration:2 animations:^{
        self.widthCon.constant = 0;
        [self.view layoutIfNeeded];
    }];
}
也可以通过将左容器移动到左侧来完成,而不是将leftCon移动到左容器视图和主视图左边缘之间的约束

- (void)expandRightView {

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

只是一个跟进,似乎问题出在UINavigationController上。如果我将左侧容器向右展开,它将按预期工作