首页 > 其他 > 详细

iOS- iPad里有趣的UIPopoverController

时间:2014-02-09 16:37:41      阅读:311      评论:0      收藏:0      [点我收藏+]

 

效果:

bubuko.com,布布扣

 

1.对UIPopoverController的简单概述                 

1.1
UIPopoverController是在iPad开发中常用的一个组件(在iPhone上不允许使用),使用非常简单
 
1.2
UIPopoverController也是一个控制器,跟其他控制器不一样的是,它直接继承自NSObject,并非继承自UIViewController
 
1.3
它只占用部分屏幕空间来呈现信息,而且显示在屏幕的最前面,(如上图所示)
 

 

2.UIPopoverController实现                       

要想成功显示一个UIPopoverController,需要经过下列步骤:

2.2设置内容控制器                                         

由于UIPopoverController直接继承自NSObject,不具备可视化的能力,因此UIPopoverController上面的内容必须由另外一个继承自UIViewController的控制器来提供,这个称为“内容控制器”

 

设置内容控制器有三种方法:

- (id)initWithContentViewController:(UIViewController *)viewController;

在初始化UIPopoverController的时候传入一个内容控制器

 

@property (nonatomic, retain) UIViewController *contentViewController;

通过@property设置内容控制器

 

- (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated;

animated可以指定设置内容控制器时要不要带有动画效果

bubuko.com,布布扣
1 @interfaceQCLocationButton() <UIPopoverControllerDelegate>
2 
3 {
4 
5     UIPopoverController *_popover;
6 
7 }
bubuko.com,布布扣

 

bubuko.com,布布扣
 // 2.弹出popover(默认特性:点击popover之外的任何地方,popover都会隐藏)
    // 2.1.内容
    QCCityListViewController *cityList = [[QCCityListViewController alloc] init];
    
    // 2.2.将内容塞进popover中
    _popover = [[UIPopoverController alloc] initWithContentViewController:cityList];
bubuko.com,布布扣

 

 

2.3设置内容的尺寸                                         

显示出来占据多少屏幕空间

设置内容的尺寸有两种方法:

@property (nonatomic) CGSize popoverContentSize;

 

- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated;
 
 
1  // 2.3.设置popover的内容尺寸
2     _popover.popoverContentSize = CGSizeMake(320, 480);

 

 

2.4设置显示的位置                                           

从哪个地方冒出来

设置显示的位置有两种方法:

- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;
这个方法需要传入一个CGRecView的,也就是说CGRect以View的左上角为坐标原点(0, 0)
 
这个CGRect的值是相对于这个第一种方法是:

[pop presentPopoverFromRect:button.bounds inView:button permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

(2)第二种方法是:

[pop presentPopoverFromRect:button.frame inView:button.superview permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

 

- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated;

箭头会指向某一个UIBarButtonItem

假如iPad的屏幕发生了旋转,UIPopoverController显示的位置可能会改变,那么就需要重写控制器的某个方法

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

在上面的方法中重写设置UIPopoverController显示的位置

bubuko.com,布布扣
1     // 2.5.展示popover
2     // self.bounds --- self
3     // self.frame  --- self.superview
4     [_popover presentPopoverFromRect:self.bounds inView:self permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
bubuko.com,布布扣

iOS- iPad里有趣的UIPopoverController

原文:http://www.cnblogs.com/qingche/p/3541409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!