使iPhone也可以拥有iPad的pop效果

iOS 8 之后新增了 UIPresentationController 控制器,用于所有的界面转场。在以前,popViewController只适用于iPad。而现在使用UIPopoverPresentationController不再需要对设备进行判断了。

这个控制器的用法我还在摸索中,今天先上一段代码,做到在iPhone像iPad中的pop弹出视图效果。 UIPopoverPresentationController不需要你去创建。苹果官方文档:In nearly all cases, you use this class as-is and do not create instances of it directly. 下面是代码:

#import "ViewController.h"
#import "TableViewController.h"
@interface ViewController ()<UIPopoverPresentationControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {  
  [super viewDidLoad]; 
   self.title = @"Presentation"; 
   UIBarButtonItem *rightBar = [[UIBarButtonItem alloc] initWithTitle:@"pop" style:UIBarButtonItemStyleDone target:self action:@selector(popView:)];  
   self.navigationItem.rightBarButtonItem = rightBar;
}
- (void)popView:(UIBarButtonItem *)rightBar {  
  TableViewController *view = [[TableViewController alloc] init];   
  view.preferredContentSize = CGSizeMake(120, 200);//popover视图的大小
  view.modalPresentationStyle = UIModalPresentationPopover;//如果没有这句,pop不会被初始化  
  UIPopoverPresentationController *pop = view.popoverPresentationController;    pop.delegate = self;//设置代理  
  pop.permittedArrowDirections = UIPopoverArrowDirectionAny;//弹出的方向    
  pop.barButtonItem = self.navigationItem.rightBarButtonItem;//导航栏右侧的按钮  
  [self presentViewController:view animated:YES completion:nil];//present即可
}
#pragma mark -- UIPopoverPresentationControllerDelegate
-(UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {  
 return UIModalPresentationNone;
}
@end

效果图如上。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏jojo的技术小屋

原 微信小程序踩坑录(canvas、pos

作者:汪娇娇 日期:2016.11.24 现在也不知道距离微信公测多少日子了,反正感觉我是埋在微信小程序这个坑里很久了,公司的项目终于快接近尾声,现在就腾点时间...

3195
来自专栏Java帮帮-微信公众号-技术文章全总结

第一天 Java基础入门【悟空教程】

2097
来自专栏phodal

让你的「微信小程序」运行在Chrome浏览器上,让我们使用WebStorm

「微信小程序」的开发框架体验起来,还不错——自带了UI框架。但是问题是他的IDE,表现起来相当的糟糕——其实主要是因为,我当时买WebStorm License...

3516
来自专栏一“技”之长

Xcode关于警告AutomaticPreferredMaxLayoutWidth的消除方法

     在iOS开发中,如果使用到了storyboard与xib文件并且使用autolayout进行自动布局,有时会报出Automatic Preferred...

373
来自专栏葬爱家族

Android高德之旅(6)

我们看惯了高德地图,似乎已经习惯了它的ui,认为河流就是蓝色的,土地就是灰色的,交通路网就是黄色的。其实这个ui也是可以改的。今天就来使用下自定义地图ui。

822
来自专栏杨熹的专栏

2 天入门 Java-Day 1

图片来自 新生大学 公众号 今天一口气敲完了慕课网上的 《Java入门第一季》,这个课的老师讲的挺好的,视频资料做的挺用心。 课程操作界面很像 codecade...

4088
来自专栏微信平台开发

【腾讯游戏人生】微信小程序开发总结

目前【腾讯游戏人生】小程序已经发布上线,大家可以扫小程序码进行体验。接下来主要介绍在开发该款小程序过程中的一些思考和积累。

4508
来自专栏jojo的技术小屋

原 微信小程序踩坑录(canvas、pos

6397
来自专栏怀英的自我修炼

怀英漫谈6-shiro-02

你好,这次我想接着上上次的Shiro的话题,聊聊Shiro怎么用。 上次我们说过Shiro有一个外部视角,也有一个内部视角。而外部视角就是通过应用(Applic...

3958
来自专栏互联网杂技

20个为前端开发者准备的文档和指南6

1.SitePoint Sass Reference(SitePoint站点的Sass手册) 它是SitePoint自有的项目,是由我们的常驻高手Hugo Gi...

36310

扫码关注云+社区