`

UIPopoverController的使用

    博客分类:
  • IOS
 
阅读更多
UIPopoverController只能在ipad设备上面使用;作用是用于显示临时内容,特点是总是显示在当前视图最前端,当单击界面的其他地方时自动消失。
UIViewController* vCtrl = [[UIViewController alloc] init]; UIPopoverController*popController = [[UIPopoverController alloc] initWithContentViewController:vCtrl];   popController.popoverContentSize = CGSizeMake(320,480); CGrect rect =CGRectMake(0,0,2,2);   [popController presentPopoverFromRect:rect inView:aView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

在使用该控制器的时候,下面几个步骤是必须的:
1.UIPopoverController该控制器的内容必须由一个控制器提供;提供方式有三:
- (id)initWithContentViewController:(UIViewController *)viewController
@property (nonatomic, retain) UIViewController *contentViewController
- (void)setContentViewController:(UIViewController *)viewController animated:(BOOL)animated
2.设置箭头方向:
@property (nonatomic, readonly) UIPopoverArrowDirection popoverArrowDirection
3.设置内容大小:
@property (nonatomic) CGSize popoverContentSize
备注:
<1>.如果从一个导航按钮处呈现,使用:
presentPopoverFromBarButtonItem:permittedArrowDirections:animated:;
如果要从一个视图出呈现,使用:
presentPopoverFromRect:inView:permittedArrowDirections:animated:
<2>.如果设备旋转以后,位置定位错误需要在父视图控制器的下面方法里面重新定位:
didRotateFromInterfaceOrientation:(在这个方法体里面重新设置rect)
然后再次调用:
- (void)presentPopoverFromRect:(CGRect)rect inView:(UIView *)view permittedArrowDirections:(UIPopoverArrowDirection)arrowDirections animated:(BOOL)animated
例子:
TodoViewController *contentViewController = [[TodoViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:contentViewController];
navigationController.contentSizeForViewInPopover = CGSizeMake(100, 100); //内容大小

    UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
popover.popoverContentSize = CGSizeMake(300, 300); //弹出窗口大小,如果屏幕画不下,会挤小的。这个值默认是320x1100

CGRect popoverRect = CGRectMake(200, 700, 10, 10);
[popover presentPopoverFromRect:popoverRect  //popoverRect的中心点是用来画箭头的,如果中心点如果出了屏幕,系统会优化到窗口边缘
inView:self.view //上面的矩形坐标是以这个view为参考的
   permittedArrowDirections:UIPopoverArrowDirectionDown  //箭头方向
   animated:YES];

[contentViewController release];
[navigationController release];

//最佳实践,使用哪个view做参考,就以哪个view的bounds送进去就好了,箭头自动指向这个view的中心
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics