App适配iPhone6-Plus和iOS810条小秘诀

上传人:宝路 文档编号:22267504 上传时间:2017-11-26 格式:DOC 页数:20 大小:39.03KB
返回 下载 相关 举报
App适配iPhone6-Plus和iOS810条小秘诀_第1页
第1页 / 共20页
App适配iPhone6-Plus和iOS810条小秘诀_第2页
第2页 / 共20页
App适配iPhone6-Plus和iOS810条小秘诀_第3页
第3页 / 共20页
App适配iPhone6-Plus和iOS810条小秘诀_第4页
第4页 / 共20页
App适配iPhone6-Plus和iOS810条小秘诀_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《App适配iPhone6-Plus和iOS810条小秘诀》由会员分享,可在线阅读,更多相关《App适配iPhone6-Plus和iOS810条小秘诀(20页珍藏版)》请在金锄头文库上搜索。

1、 (原文:raywenderlich 作者:Jack Wu 译者:TurtleFromMars)过节啦!为庆祝佳节,看看我给这篇文章写的这段极客小诗吧:“ Keynote 前夜,无人知晓,新 API能否登场对 Siri 的期待,Touch ID 的希望而此刻 iOS 8 应声而出,震惊全场扩展,Swift,Metal,整整一箩筐通用 Storyboard,又有谁曾料想一片欢呼声中,有人开始迷惘现有的这些 App,适配问题实在惆怅不过不必担心,因为这篇教程会与您讲讲新的 API 和屏幕尺寸,助你的 App 焕发容光遵循十条小贴士,豁然开朗iOS 8 萌萌哒!嗯老鸭粉丝汤? ”先不管诗写的怎样,言

2、归正传让你的 App 适配 iOS 8 和新设备的十条小贴士正好赶上节假日!:准备开始你可能会想“我在 iPhone 6 Plus 上把我的 App 遛了一遍,看起来没啥问题” 。没错,你的 App 跑起来应该和原来一样,但这并不意味着你可以就此收手!让现有的 App 在放大显示模式(Scale Mode)下运行,这一点 Apple 已经做得不错了,App 单纯地被放大,以此适应更大的屏幕。随便扫一眼,似乎还可以,但你会发现上面的状态栏也变大了。现在你一定想让自己的 App 在全屏显示模式下运行吧,有图有真相:全屏显示模式让你的 App 能在相同的屏幕空间内显示更多的信息。注意,状态栏的大小也

3、不一样。在这张图片中,文字可能看起来特别小,但在 Retina HD 屏幕上看起来刚好合适。现在开始准备适配全屏显示模式,那么问题来了:要放弃支持 iOS 7 吗?你总要做出最终抉择,然而这里还有几点值得考虑:iOS 7 用户依然能在 App Store 上获取当前版本。大屏设备(iPhone 6 和 iPhone 6 Plus)运行系统的最低版本是 iOS 8。虽然 iOS 8 的采用率低于一年前同期的 iOS 7,但也已经超过 60%。酷炫的新 API。:好,现在你心意已决,接下来我们分三个小节来讲 让你的 App 适配 iPhone 6,iPhone 6 Plus 和 iOS 8 的十条

4、小贴士。注:如果你选择 iOS 7 为更新的目标系统,你依然可以使用新 API。欲知如何在同一个 App 中支持不同的 iOS 版本和设备,请参阅支持不同的 iOS 版本和设备。第一小节 支持新的屏幕尺寸第 1条:选用自适应布局和通用 Storyboard如果你的 App 已经在用 Storyboard 和Auto Layout,那就省事了,适配工作轻而易举。如果没有,更待何时?Size Class 依赖于 Auto Layout 和 通用Storyboard( Universal Storyboard) ,显然 Apple 已经清楚表明 Storyboard 会是将来 iOS App 的一大

5、中心。而且,没有这个的话最新的 SDK WatchKit 根本跑不起来。好消息是,如果你还没选用, 上有几篇关于Storyboard 和 Auto Layout 的优秀教程。我很中意这几篇:Swift 语言 Storyboard 教程 第 1 部分Swift 语言 Storyboard 教程 第 2 部分Swift 语言 Auto Layout 入门教程 第 1部分Swift 语言 Auto Layout 入门教程 第 2部分要开始实现自适应布局,第一步就是把现有的 Storyboard 转换成通用Storyboard一个可以处理任何屏幕大小界面的 Storyboard。你要做的只是点击一下!

6、打开你的Storyboard,在 Info Panel(command option 1)信息面板中选定 Use Size Classes:你会注意到你的视图都变成了正方形。先别太激动,这并不意味着你的 App 现在可以支持黑莓 Passport 手机,这只是一个适配 Any(任意)屏幕尺寸的代表性尺寸。所有的约束应该是原样保留了下来,目前还没有任何实质变化。你可以使用Assistant Editor(辅助编辑器)中新加的 Preview(预览)模式来确认这一点。你现在可以做的是为不同的尺寸类别单独设置约束。要深入学习自适应布局,尺寸归类和通用 Storyboard,请参阅自适应布局入门。注:

7、如果你的 App 是 Universal App,你可能为 iPhone 和 iPad 界面单独准备了不同的 Storyboard。这里有两种选择:继续使用分开的 Storyboard。只把iPhone 的 Storyboard,或把所有的Storyboard 转换成通用 Storyboard,然后依然分别为 iPhone 和 iPad 进行适配。砍掉重练!改成一个通用Storyboard!这样以后就只需维护一个Storyboard,不过这个方案的工作量可不小。目前 Xcode 中还没有帮助你重构的工具,转换只能靠自己。第 2 条:开启全屏显示模式与启动画面文件回想一下,全屏显示模式比放大显示

8、模式爽多了,而你刚刚完成的工作只是采用自适应布局,如果你的 App 不能在全屏显示模式下运行的话,这又有何益呢?幸运的是,开启全屏显示模式相当容易,还有一点额外的好处!Apple 如是说:在运行时,系统会查找 Storyboard launch screen file(Storyboard 启动画面文件) ,如果想让系统知道你的 App 支持 iPhone 6 的不同屏幕尺寸,请在你的App Bundle 里包含一个 Storyboard 启动画面文件。 如果存在这样的文件,系统会认定你的 App 明确适配 iPhone 6和 iPhone 6 Plus 并在全屏显示模式下运行。打住!启动画面

9、 Storyboard?也许你会问:“顾名思义的话我再也不用准备 20 个启动画面图片了?”对对对!确定一定以及肯定!这就开工吧,由 New File 向你的 App中添加一个新文件。在 iOS User Interface 当中有一个新的文件类型Launch Screen,名副其实,向你的 App添加一个新的启动画面!话说 Xcode 创建的默认启动画面真是有点寒碜。有意思,前面我们聊的都是Storyboard,这下 Xcode 为你创建了一个 xib 文件。赶紧打开这个 xib,删掉那几个丑到爆的 label,把它装扮成你喜欢的样子吧。如果想让它和以前一样的话,只要添加一个包含启动图片的U

10、IImageView 就可以了。最后,到项目综合设置(General Settings)里像这样选择你的新 xib 文件为 Launch Screen File:构建你的 App 并在 iPhone 6 Plus 模拟器上运行,新启动画面和超赞的全屏显示模式,尽情享受吧。注:如果要支持 iOS 7 和或更老的系统版本,你依然要提供 4 英寸启动图片。否则你的 App 会以 3.5 英寸模式显示。第 3 条:新一代 Retina 显示屏和3x图片 iPhone 6 Plus 配备了 401 PPI 的新一代 Retina HD 显示屏。要适配这么高的分辨率,你需要提供 3 倍分辨率的图片。就像2

11、x 图片一样,你要做的就是提供3x 图片, iOS 会帮你加载正确的图片。注:iPhone 6 同样配备了 Retina HD 显示屏,但其像素密度与前代 Retina iPhone 相同,依然加载 2x 的图片资源。你的 App 可以在全屏显示模式下运行了!喜大普奔!不过还有很多问题要处理,请先不要离开!第二小节 用户许可的变动用户一定会喜欢 iOS 8 在隐私设置方面的改进。不幸的是,如果使用不当,你的 App可能会崩溃。在这一小节中,你将修复这些问题,让用户放心、开心。往下看,这小节的三条小贴士:第 4 条:修复位置许可 iOS 8 引入请求用户位置的两个新权限:一个仅当App 运行时接

12、收更新,另一个可以在App 未运行的时候接收更新。以前,开始监视位置的时候,iOS 会自动向用户寻求 App 权限。这一点在iOS 8 中有所改变,你需要在开始更新位置之前明确地显式请求用户许可。为此,如果当前许可状态不明,你需要调用 CLLocationManager 的requestWhenInUseAuthorization 或requestAlwaysAuthorization 方法。在 CLLocationManager 调用startUpdatingLocation 方法之前加上这个调用就行了。就这么简单:self.locationManager=CLLocationManager

13、allocinit;self.locationManager.delegate=self;if(CLLocationManagerauthorizationStatus=kCLAuthorizationStatusNotDetermined)self.locationManagerrequestWhenInUseAuthorization;self.locationManagerstartUpdatingLocation;最后一步:在 App 的 info.plist 中添加NSLocationWhenInUseUsageDescription或 NSLocationAlwaysUsageDe

14、scription 为新键,然后输入告知用户请求许可的字符串。例如:“显示附近的物品项需要获取您的位置。 ”第 5 条:修复通知注册在 iOS 8 中,用户通知许可有变动,主要是为了支持可操作通知。老版本的相关 API 在 iOS 8 中无效,不宜使用。现在,通知许可共分为两层,你的App 必须先请求许可显示特定类型的通知,而成功得到用户许可后,你需要请求许可接收远程通知。之前的做法是在-application:didFinishLaunchingWithOptions:内调用-registerForRemoteNotificationTypes:来接收 delegate 回调检查状态。如果在

15、 iOS 8 中这么写,你会发现根本没有调用delegate 方法。这是由于你需要先请求第一层用户通知许可。以下是 appDelegate 中的一个简单示例:-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions/1UIUserNotificationSettings*settings=UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeAlert|UIUserNo

16、tificationTypeBadge|UIUserNotificationTypeSoundcategories:nil;/2applicationregisterUserNotificationSettings:settings;returnYES-(void)application:(UIApplication*)applicationdidRegisterUserNotificationSettings:(UIUserNotificationSettings*)notificationSettings/3if(notificationSettings.types!=UIUserNotificationTypeNone)/4applicationregisterForRemoteNotifications;/5-(v

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号