美文网首页
iOS8新特性 UIPresentationController

iOS8新特性 UIPresentationController

作者: 凯旋之歌 | 来源:发表于2017-04-06 11:33 被阅读0次

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等

相关文章

网友评论

      本文标题:iOS8新特性 UIPresentationController

      本文链接:https://www.haomeiwen.com/subject/yexxattx.html