【iOS笔记】【25】UIPopoverPresentationController的使用

本文最后更新于:2021年12月22日 中午

【主页】系列文章目录

【iOS笔记】系列目录


目录

一、常见属性

二、常见方法

三、示例代码


一、常见属性

属性 描述
sourceView 箭头所指的对应的视图,sourceRect会以这个视图的左上角为原点
sourceRect 箭头所指对应的区域,以sourceView为参照
permittedArrowDirections 箭头方向

二、常见方法

UIAdaptivePresentationControllerDelegate代理方法
1
2
3
4
//默认返回的是覆盖整个屏幕,需设置成UIModalPresentationNone。
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller{
return UIModalPresentationNone;
}

UIPopoverPresentationControllerDelegate代理方法

1
2
3
4
5
6
7
8
9
10
11
12
13
//点击蒙版是否消失,默认为yes;
// iOS13废弃
-(BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{
return YES;
}

//弹框消失时调用的方法
// iOS13废弃
-(void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController{

NSLog(@"弹框已经消失");

}

三、示例代码

1. 遵守协议

实现协议UIPopoverPresentationControllerDelegate

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 默认返回的是覆盖整个屏幕,需设置成UIModalPresentationNone
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone;
}

// 设置点击蒙版是否消失,默认为YES
- (BOOL)popoverPresentationControllerShouldDismissPopover:(UIPopoverPresentationController *)popoverPresentationController {
return YES;
}

// 弹出视图消失后调用的方法
- (void)popoverPresentationControllerDidDismissPopover:(UIPopoverPresentationController *)popoverPresentationController {


}

2. 触发弹窗

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Button action
- (void)popAction:(UIButton *)button {
UIViewController *vc = [UIViewController new];
vc.preferredContentSize = CGSizeMake(300, 500);
vc.modalPresentationStyle = UIModalPresentationPopover;
UIPopoverPresentationController *pover = vc.popoverPresentationController;
pover.delegate = self;
pover.sourceView = button; // 弹出时所参照的视图,与弹框的位置有关
pover.sourceRect = button.bounds; // 弹出时参照视图的大小,与弹框的位置有关
pover.backgroundColor = [UIColor lightGrayColor];
pover.permittedArrowDirections = UIPopoverArrowDirectionAny; //弹框的箭头方向

[self presentViewController:vc animated:YES completion:^{

}];
}

联系方式

邮箱: xiebangyao_1994@163.com

相关账号: