ios 为什么uipopoverpresentationcontroller 后的视图是全屏的

 我来答
风清月朗z0
2016-06-17 · TA获得超过545个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:163万
展开全部
1.回顾UIPopoverController的使用,下面这份代码只能在ipad下运行
// 初始化控制器,SecondViewController类继承自UIViewController
 SecondViewController *vc = [[SecondViewController alloc] init];
// 把vc包装成UIPopoverController
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:vc];
  // 设置popover的指向,
  // 指向当前控制上button按钮,所以FromRect后跟bounds
  // 如果是指向当前控制的View,则FromRect后跟frame
[popover presentPopoverFromRect:self.button.bounds inView:self.button permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
2. 运用UIPopoverPresentationController,下面这份代码在iphone和ipad中,都可以正常运行
2.1 在iphone中是常见的modal方式,也就是从屏幕底部爬上来,而在ipad中,是popover的那种方式
 // 初始化控制器
SecondViewController *vc = [[SecondViewController alloc] init];
// modal出来是个popover
vc.modalPresentationStyle = UIModalPresentationPopover;
// 取出vc所在的UIPopoverPresentationController
vc.popoverPresentationController.sourceView = self.button;
vc.popoverPresentationController.sourceRect = self.button.bounds;
[self presentViewController:vc animated:YES completion:nil];
2.2 在iphone中,上面这份代码等同于下面:
SecondViewController *vc = [[SecondViewController alloc] init];
/* 相当于中间3行代码不存在
vc.modalPresentationStyle = UIModalPresentationPopover;
vc.popoverPresentationController.sourceView = self.button;
vc.popoverPresentationController.sourceRect = self.button.bounds;
*/
[self presentViewController:vc animated:YES completion:nil];
2.3 苹果在iOS8中对UIViewController做了类扩展
  也就是说popoverPresentationController是UIViewController的属性
  modalPresentationStyle是UIViewController成员变量
  UIPopoverPresentationController继承自UIPresentationController, UIPresentationController又继承自NSObject
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式