【iOS UI】popoverPresentationContr

作者: XIAO_WEN | 来源:发表于2017-05-17 17:22 被阅读2598次
    popoverPresentationController

    preface:

    1、支持协议

    @interface ViewController ()<UIPopoverPresentationControllerDelegate>
    

    2、添加按钮,并为其绑定方法

        _btn = [UIButton buttonWithType:UIButtonTypeCustom];
        _btn.frame = CGRectMake(150, 100, 100, 100);
        
        [_btn setTitle:@"PopOver" forState:UIControlStateNormal];
        _btn.backgroundColor = [UIColor orangeColor];
        [_btn addTarget:self action:@selector(pop) forControlEvents:UIControlEventTouchDown];
        [self.view addSubview:_btn];
    

    3、pop方法

    - (void)pop{
        
        //  初始化弹出控制器
        UIViewController *vc = [UIViewController new];
        
        //  背景色
        vc.view.backgroundColor = [UIColor yellowColor];
        
        //  弹出视图的显示样式
        vc.modalPresentationStyle = UIModalPresentationPopover;
        
        //  1、弹出视图的大小
        vc.preferredContentSize = CGSizeMake(300, 300);
        
        //  弹出视图的代理
        vc.popoverPresentationController.delegate = self;
        
        //  弹出视图的参照视图、从哪弹出
        vc.popoverPresentationController.sourceView = _btn;
        
        //  弹出视图的尖头位置:参照视图底边中间位置
        vc.popoverPresentationController.sourceRect = _btn.bounds;
        
        //  弹出视图的箭头方向
        vc.popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
        
        //  弹出
        [self presentViewController:vc animated:YES completion:nil];
    }
    

    4、代理方法

    设置点击蒙版是否消失

    - (BOOL) popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    
       return YES;
    
    }
    

    默认返回的是覆盖整个屏幕,需设置成UIModalPresentationNone

    - (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
    
        return UIModalPresentationNone;
    
    }
    

    弹出视图消失后调用的方法

    - (void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
    
        NSLog(@"dismissed");
    
    }
    

    相关文章

      网友评论

      • PGOne爱吃饺子:你好,请问那个sourceRect如何设置的呢,谢谢
      • AlwaysLuckyMa:你好 我想问一下 你的那个小尖角如何让他不透明 和下面的颜色一样
        XIAO_WEN:@MaTsonga 可以在UIPopoverBackgroundView这个类的初始化方法里设置样式

      本文标题:【iOS UI】popoverPresentationContr

      本文链接:https://www.haomeiwen.com/subject/sigdxxtx.html