UIPopoverPresentationController用法

学的时候没有学过这玩意。用到的时候,我在网上找的资料试着调试了一下没有调试出来。。我也是醉了。只好请教我们老师帮我调试出来。

根据我的理解差不多就这样:

1.弹出视图控制器是控制器本身自带的一个属性,所以在用的时候不需要实力化。

2.弹出视图控制器需要两个控制器,一个用来触发弹出控制器事件。一个用来做弹出控制器

代码:

//遵守弹出框代理
@interface ViewController ()<UIPopoverPresentationControllerDelegate>

//这个方法是通过一个通知事件来触发的。也可以通过其他事件触发。self.iconViewController是你需要弹出来的视图控制器
- (void)changeIconViewAlert : (NSNotification *)sender {
    UIButton *btn = (UIButton *)sender.object;//这个通过通知传过来的按钮。用来确定弹出控制器出现的位置
    self.iconViewController.modalPresentationStyle = UIModalPresentationPopover;//设置控制器为弹出类型
    UIPopoverPresentationController *pover = self.iconViewController.popoverPresentationController;//获得弹出控制器属性
    self.iconViewController.preferredContentSize = CGSizeMake(300, 200);//设置弹出控制器视图的大小
    pover.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.5];//设置弹出控制器背景视图为白透明

    [pover setSourceView:self.view];//设置在哪个控制器里面弹出来
    [pover setSourceRect:btn.frame];//设置弹出视图的位置。
    [pover setPermittedArrowDirections:UIPopoverArrowDirectionAny];//设置弹出类型为任意
    [self presentViewController:self.iconViewController animated:YES completion:nil];//显示弹出控制器
}
//最后你就可以在你的弹出控制器的视图上为所欲为了,我这是是self.iconViewController.

3.之前写得有点问题纠正一下了。不好意思。。

- (IBAction)laerClicked:(UIButton *)sender {
    /**
     * ios9.0之后使用的方法
     可以通用在iphone和ipad上。
     当在iphone运行时这个配置无效全屏退出视图
     */
    UIPopoverPresentationController *pover = self.alertVC.popoverPresentationController;
    [pover setSourceRect:sender.frame];//弹出视图显示位置
    [pover setSourceView:self.view];//设置目标视图,这两个是必须设置的。
    pover.delegate = self;
    [self presentViewController:self.alertVC animated:YES completion:nil];//弹出视图
}
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
    return UIModalPresentationNone;
}
- (IBAction)iosClicked:(UIButton *)sender {
    /** 1.ios9.0之前来进行弹出框的控制器的管理,当需要弹出控制器视图的时候需要使用UIPopoverController的对象来弹出控制器,
     2.在没有设置弹出视图的大小的时候,会有一个默认的大小。 */
    UIPopoverController *poVC = [[UIPopoverController alloc]initWithContentViewController:self.alertVC];//传入要弹出的视图
    [poVC setPopoverContentSize:CGSizeMake(100, 100) animated:YES];//设置弹出视图的大小
    /** * 1.UIPopoverController弹出视图的使用的方式的一个参数代表弹出框箭头所指向的位置
     2.弹出框加载到那个目标视图上 3.弹出的方向 4.动画 */
    [poVC presentPopoverFromRect:sender.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES;
}
- (AlertViewController *)alertVC{
    if(!_alertVC) {
        _alertVC = [[AlertViewController alloc]init];
        _alertVC.modalPresentationStyle = UIModalPresentationPopover;//配置推送类型
        _alertVC.preferredContentSize = CGSizeMake(300, 400);//设置弹出视图大小必须好推送类型相同
    }
    return _alertVC;
}










  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值