iOS8新特性 UIPresentationController

UIPresentationController是提供高级视图切换的类。它让管理present ViewController的过程变得简单。

先讲一些presentation基础知识,在iPad的设置页面,可以通过popOver弹出一个UIViewController,这个弹出的,可以和用户交互的Controller叫做PresentedViewController,而后面那个被部分遮挡的UIViewController叫做PresentingViewController.

而在UIPresentationController中,PresentedViewController是presentation的content,而PresentingViewController叫做Chrome。如下图:

所有的UIViewController的presentation都是由UIPresentationController管理的。在UIPresentationController中可以定义content和chrome的动画,可以根据大小的变化来改变content大小,可以根据系统的不同,来改变展示方式,UIPresentationController也是可复用的,可以很容易的拿到其他的UIViewController中去使用。

UIPopoverPresentationController

它在iOS8中替代了UIPopoverController,它在功能上与旧的controller完全等同,并且新增了一些内置的适配特性,可以自动适配iPad与iPhone。以下是新版与旧版接口的比较:

UIPopoverController使用方法:

UIViewController *contentController = [[UIViewController alloc] init];

UIPopoverController *poc = [[UIPopoverController alloc] initWithContentViewController:contentController];

[poc presentPopoverFromBarButtonItem:itemButton

permittedArrowDirections:UIPopoverArrowDirectionAny  animated:YES];

self.xxController = poc;

需要消除时:[self.xxController dismissPopoverAnimated:YES];

我们先声明了一个UIViewController作为content controller,使用它初始化了一个UIPopoverController,然后调用presentPopover方法来展示它。

然而我们如果使用UIPopoverPresentationController,使用方法如下:

UIViewController *contentController = [[UIViewController alloc] init];

contentController.modalPresentationStyle = UIModalPresentationPopover;

UIPopoverPresentationController *popPC = languageListController.popoverPresentationController;

popPC.barButtonItem = itemButton;

popPC.permittedArrowDirections = UIPopoverArrowDirectionAny;

popPC.delegate = self;

[self presentViewController:contentController animated:YES  completion:nil];

需要消除时:[self dismissViewControllerAnimated:YES completion:nil];

将UIViewController的modalPresentationStyle设置成UIModalPresentationPopover,这个值用来实现popover效果,并且各个平台自动适应。第二行中,通过popoverPresentationController属性来获取它的popoverPresentationController,而不是创建一个新的。然后设置它的一些界面属性,最后调用presentViewController方法来显示这个controller。这样就可以在iPad与iPhone显示自动适应的popover效果了


- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection

用于设置弹出的样式:UIModalPresentationOverFullScree,UIModalPresentationOverCurrentContext,UIModalPresentationPopover等

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容