Sco*_*ets 1 animation uiviewcontroller ios
对于某些情况,我建议阅读:
非常相关的问题:"来自View Controller"使用UIViewControllerContextTransitioning消失 非常相关的答案:https://stackoverflow.com/a/25901154/751268
我正在尝试实现一个自定义视图控制器转换,动画新视图控制器覆盖屏幕的一半,同时将呈现视图控制器缩小到90%(在窗口中心,在呈现的视图控制器下面).
首先,我的问题是viewFromKey:返回nil.要解决这个问题,答案提到:
如果要为呈现视图控制器的视图设置动画,则应考虑使用
UIModalPresentationFullscreen样式或继续使用UIModalPresentationCustom并实现自己的子类,UIPresentationController并shouldRemovePresentersView返回YES.
我做到了,并且viewFromKey:不再返回nil,但现在呈现视图控制器完全消失(这是有道理的,考虑到我明确说它应该通过实现shouldRemovePresentersView).
我将呈现视图控制器的视图添加到容器视图,但它仍然被删除.还有什么我应该做的才能让这个工作?
这是一些相关的代码:
UIView *fromView = [transitionContext viewForKey:UITransitionContextFromViewKey
UIView *toView = [transitionContext viewForKey:UITransitionContextToViewKey];
BOOL show = self.isPresentation;
UIView *menuView = show ? toView : fromView;
UIView *backView = show ? fromView : toView;
UIView *containerView = [transitionContext containerView];
[containerView addSubview:backView];
[containerView addSubview:dimmedView];
[containerView addSubview:menuView];
// Adjust transforms, alpha and perform animations
Run Code Online (Sandbox Code Playgroud)
我认为,通过返回YES从shouldRemovePresentersView手动将它添加到containerView,应该解决这个问题,但backView无论如何获取删除...
我正在添加另一个答案,因为我的回答太长而无法发表评论.
首先viewForKey在iOS8中可用,所以除非你只针对iOS8(为什么?),否则你不应该使用它,或者在检查UIViewControllerContextTransitioning响应那个选择器并使用viewControllerForKeyfor iOS7 之后使用它.
话虽如此,在我看来,这是一个错误,我解释自己:
如果你查看UIPresentationController头文件,你会看到它说
// Indicate whether the view controller's view we are transitioning from will be removed from the window in the end of the
// presentation transition
// (Default: YES)
- (BOOL)shouldRemovePresentersView;
Run Code Online (Sandbox Code Playgroud)
因此,当您看到默认值为YES时,所以只有当您特别想要拒绝时才应该覆盖它.但是,你是对的,如果没有明确地设置为YES,viewForKey那么UITransitionContextFromViewControllerKey遗体为零.
我认为你应该为此填写错误报告,现在使用viewControllerForKey哪个可以使用(没有错),因为它没有被弃用,并且在两个操作系统版本中都没有问题.
这是最有可能是错误的原因是,viewForKey应该返回了一个视图UITransitionContextFromViewControllerKey 时,将shouldRemovePresentersView明确设置为NO,而不是YES.
我的2美分
| 归档时间: |
|
| 查看次数: |
3320 次 |
| 最近记录: |