UIPopoverController的使用

1.UIPopoverController是什么?
它是iPad开发中常见的一种控制器,并且在iphone上是不允许使用。
该控制器直接继承自NSObject,而不是继承自UIViewController,就决定了该控制器不可视。
该控制器占用部分屏幕空间,并且显示在屏幕的最前面
关于上面的说明:虽然该控制器不可视,但是该控制器有contentViewController属性,也说明了该控制器是作为包装其他控制器的父控制器;虽然该控制器暂用部分空间,且显示在屏幕的最前面。但是在屏幕中的其他可交互控件依然可以进行交互,可以说这是一个小小的bug,会影响用户的使用体验。需要我们自己去消除。
2.UIPopoverController怎么使用?
1.创建一个要显示的控制器,也就是UIPopoverController的内容控制器。

//YCMenuController控制器继承自UITableViewController
YCMenuController *menuVC = [[YCMenuController alloc] init]
2.初始化UIPopoverController控制器
_menuPopover = [[UIPopoverController alloc] initWithContentViewController:menuVC];
3.显示该UIPopoverController控制器
- (IBAction)menuClick:(id)sender 
    //sender是一个按钮
    [self.menuPopover presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

此外还有另外一种显示方式:

 [self.menuPopover presentPopoverFromRect: sender.bounds inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

对上面两种方法给出一个具体的说明

//围绕着⼀一个UIBarButtonItem显⽰示(箭头指定那个UIBarButtonItem
//item:围绕哪个UIBarButtonItem显示
//arrowDirections :箭头的⽅方向
//animated :是否通过动画显⽰示出
- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;
//围绕着某⼀块特定区域显⽰(箭头指定那块特定区域)
//rect :指定箭头所指区域的矩形框范围(位置和尺⼨寸)
//view :rect参数是以view的左上⾓角为坐标原点(0,0)
//arrowDirections :箭头的⽅方向
//animated :是否通过动画显⽰示出来
   - (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view
   permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections
   animated:(BOOL)animated;

​这里要对UIPopoverController有一个强引用。在这里也就是要对_menuPopover有一个强引用。
如果要对显示的popover的尺寸有一个控制,可以在YCMenuController的viewDidLoad方法中添加如下这句代码(iOS7以及后版本):

 self.preferredContentSize = CGSizeMake(120, 44);

iOS6或iOS6之前

self.contentSizeForViewInPopover = CGSizeMake(120, 44);

3.可以实现相同效果的UIPopoverPresentationController
该类出现在iOS8中。可以代替UIPopoverController。
它的使用方法:

//在这里定义一个内容控制器
UIViewController *contentVC = [[UIViewController alloc] init]; 
//contentVC的呈现方式就是通过Popover的方式
contentVC.modalPresentationStyle = UIModalPresentationPopover;
//已经告诉内容控制他的弹出方式就是popover的方式
//所以可以通过内容控制器的popoverPresentationController属性得到UIPopoverPresentationController
UIPopoverPresentationController *popPV = contentVC.popoverPresentationController;
popPV.barButtonItem = self.categoryItem;
[self presentViewController:contentVC animated:YES completion:nil];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值