学的时候没有学过这玩意。用到的时候,我在网上找的资料试着调试了一下没有调试出来。。我也是醉了。只好请教我们老师帮我调试出来。
根据我的理解差不多就这样:
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;
}