但有一个问题.虽然它的动画,导航栏的大小只有44个点.完成动画后,导航控制器发现有状态栏,因此状态栏增加了20个点.
我的问题是,是否有可能在其动画时将导航栏设置为64磅,因此在完成动画时它不会再改变.
请在这里查看更多细节Custom View Transitions
这是我的自定义动画代码:
- (voID)animateTransition:(ID<UIVIEwControllerContextTransitioning>)TransitionContext{ UIVIEwController *toVIEwController = [TransitionContext vIEwControllerForKey:UITransitionContextToVIEwControllerKey]; CGRect finalFrame = [TransitionContext finalFrameForVIEwController:toVIEwController]; UIVIEw *containerVIEw = [TransitionContext containerVIEw]; CGRect screenBounds = [[UIScreen mainScreen] bounds]; toVIEwController.vIEw.frame = CGRectOffset(finalFrame,screenBounds.size.height); [containerVIEw addSubvIEw:toVIEwController.vIEw]; NSTimeInterval duration = [self TransitionDuration:TransitionContext]; [UIVIEw animateWithDuration:duration delay:0.0 usingSpringWithdamPing:0.6 initialSpringVeLocity:0.0 options:UIVIEwAnimationoptionCurvelinear animations:^{ toVIEwController.vIEw.frame = finalFrame; } completion:^(BOol finished) { [TransitionContext completeTransition:YES]; }];}
更新:有人解决了这个问题.但非常Hacky.
将toVIEwController.vIEw添加到containerVIEw后添加此代码.
if ([toVIEwController isKindOfClass:[UINavigationController class]]) { UINavigationController* navigationController = (UINavigationController*) toVIEwController; UINavigationbar* bar = navigationController.navigationbar; CGRect frame = bar.frame; bar.frame = CGRectMake(frame.origin.x,frame.origin.y + 20.0f,frame.size.wIDth,frame.size.height);}
有更好的方法吗?
解决方法 我有同样的问题,并解决了在设置此框架之前将toVIEwController添加到容器.反转如下的行:
[containerVIEw addSubvIEw:toVIEwController.vIEw];toVIEwController.vIEw.frame = CGRectOffset(finalFrame,screenBounds.size.height);总结
以上是内存溢出为你收集整理的使用UINavigationController进行iOS 7自定义当前转换全部内容,希望文章能够帮你解决使用UINavigationController进行iOS 7自定义当前转换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)