我正在尝试自己制作一个自定义的 alertView(适用于 iOS7+),但我在 alertView 演示文稿中遇到了困难。
我有一个黑色背景的 UIViewController(alpha 设置为 0.25f),还有一个作为子视图的 alertView。
当我想显示 alertView 时,我以模态方式显示 viewController:
-(void) show
{
UIWindow* window = [[UIApplication sharedApplication] keyWindow];
self.modalTransitionStyle = UIModalPresentationCustom;
self.transitioningDelegate = self;
[window.rootViewController presentViewController:self animated:YES completion:nil];
}
这是我的动画对象:
-(NSTimeInterval) transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
{
NSLog(@"%s",__PRETTY_FUNCTION__);
return 2;
}
-(void) animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
NSLog(@"%s",__PRETTY_FUNCTION__);
UIView* toView = [transitionContext viewForKey:UITransitionContextToViewKey];
toView.alpha = 0;
UIView* container = [transitionContext containerView];
[container addSubview:toView];
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
toView.alpha = 0.5;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
问题是:模态 VC 与背景中的呈现 VC 一样淡出,但是当动画结束时,呈现 VC 会从背景中移除。
如果我[transitionContext completeTransition:YES];
改为调用,呈现的 VC 在后台,但模态 VC 在动画结束时被删除,所以我猜如果我们发送“否”,上下文会取消演示。
有没有办法将呈现的 VC 保持在后台,而不必对其进行快照并将其设置为模态 VC 视图的背景?