ios开发app - iOS presentView相关

查看:89
本文介绍了ios开发app - iOS presentView相关的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

想做一个效果:
present一个VC,不让这个VC完全覆盖之前的界面,还要能看见之前的界面。就像系统的UIAlertViewControlle

解决方案

可以通过 <UIViewControllerAnimatedTransitioning> 自定义页面转场达到该效果,具体可参考我之前写的一个小项目。

先设置 modalPresentationStylemodalTransitionStyle

// iOS8+
self.modalPresentationStyle = UIModalPresentationCustom;
self.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;

然后定一个遵从 UIViewControllerAnimatedTransitioning 协议的动画代理对象,并在内部实现以下方法。

@implementation FEPopupMenuControllerAnimatedTransitioning

- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext{
    return 0.25;
}

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext{
}

@end

最后在 VC中 实现 UIViewControllerAnimatedTransitioning 协议,返回钢材定义的转场动画代理对象

#pragma mark <UIViewControllerAnimatedTransitioning>

- (id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source
{
    FEPopupMenuControllerAnimatedTransitioning *transitioning = [FEPopupMenuControllerAnimatedTransitioning new];
    return transitioning;
}

- (id<UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed
{
    FEPopupMenuControllerAnimatedTransitioning * transitioning = [FEPopupMenuControllerAnimatedTransitioning new];
    return transitioning;
}

详情可参考:Feelinging/FEPopupMenuController

这篇关于ios开发app - iOS presentView相关的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆