iOS8新特性(2)——UIPopoverController和UIPresentationController

一、以往使用 UIPopoverController

  都是只在iPad上使用

 1 /**
 2  *  UIPopoverController 只能用于iPad,上,iPhone上使用会崩溃
 3  */
 4 -(void)old
 5 {
 6     VC2 *vc = [[VC2 alloc]init];
 7     
 8     UIPopoverController *popover = [[UIPopoverController alloc]initWithContentViewController:vc];
 9     [popover presentPopoverFromRect:self.btn.bounds inView:self.btn permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
10 }

 

二、统一的方式:

 1 -(void)new
 2 {
 3     VC2 *vc = [[VC2 alloc]init];
 4     
 5     //下面三行代码在iPhone中是会被忽略的
 6     //但是在iPad中是将我们的present当作是present一个popover
 7     //所以这是一种比较好的适配iPhone和iPad的共存方法
 8     vc.modalPresentationStyle = UIModalPresentationPopover;
 9     vc.popoverPresentationController.sourceRect = self.btn.bounds;
10     vc.popoverPresentationController.sourceView = self.btn;
11     
12     [self presentViewController:vc animated:YES completion:nil];
13 }
 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     
 4     ViewController2 *vc2 = [[ViewController2 alloc]init];
 5     
 6     //vc2.modalPresentationStyle = UIModalPresentationFormSheet;//弹出在中间
 7     vc2.modalPresentationStyle = UIModalPresentationPopover; //popover的形式弹出
 8     vc2.popoverPresentationController.barButtonItem = self.navigationItem.leftBarButtonItem;
 9     
10     [self presentViewController:vc2 animated:YES completion:nil];
11     
12 }

 

三、机制

    1、只要一调用[self presentViewController:vc2 animated:YES completion:nil];

    2、首先会生成一个UIPresentationController

    3、然后由UIPresentationController管理控制器的切换

  4、无论设置UIModalPresentationFormSheet还是UIModalPresentationPopover模式,都是UIPresentationController来管理

四、一些重要的属性

   UIPresentationController *p;

   p.presentingViewController; //底部正在弹出的控制器(主)

   p.presentedViewController;  //已经弹出来的控制器(被)

   p.presentedView;            //已经被弹出来的控制器的view

 

 vc2.presentationController;        //控制“已经弹出来的控制器” 的控制器:就是 p或者p的自控制器 (只读,内部采用懒加载的方式,所以不要去改)

 vc2.popoverPresentationController  //如果设置style为popover出来的就同上,否则不设置style或者设置其他style就是nil

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值