一、首先看欢迎界面,这个是我们开发者经常接触的
二、创建工程更加人性化
-
1.内置表情包(Sticker Packs)
-
可以通过在Xcode中新建Sticker Pack Application来创建。这种方式可以简单地通过添加图片来在iMessage中添加表情包。添加的贴纸需要满足一下条件
图片类型必须是 png、apng、gif或者jpeg
文件大小必须 小于500K
图片大小必须在 100 100 到 206 206 之间 -
需要注意的是:必须要永远提供 @3x 大小的图片(即 300 300 到 618 618)。系统可以根据当前设备通过 runtime 自动调整图片来呈现 @2x 和 @1x
系统能够自适应的展示贴纸,所以为了更好的展示贴纸,最好提供的贴纸是以下三种大小的类型
小型 100100
中型 136136
大型 206*206
-
- 2.iMessage应用
iMessage app使用完整的框架和Message app进行交互。使用iMessage app能够
在消息应用内呈现一个自定义的用户交互界面。 使用MSMessagesAppViewController
创建一个自定义或者动态的表情包浏览器。使用 MSStickerBrowserViewController
添加文本、表情、或者媒体文件到消息应用的文本输入框。使用 MSConversation
创建带有特定的应用数据交互的消息。使用 MSMessage
更新可以相互影响的消息(例如,创建游戏或者可以合作的应用)。
三、类名提示
从Xcode8beta1就支持类名提示了,所以Xcode8正式版也支持类名提示,你们在也不用忧伤了
四、Swift3.0 and Swift2.3 随意切换
Xcode8支持3.0语法和2.3语法随意切换,默认创建出来是3.0语法, 如果想用2.3语法是可以切换的
值得一提的是Xcode8.0并没有做语法捆绑,在以往的版本中都是捆绑最新的语法
PS:苹果越来越开放
- 语法转换
当然Swift只能向上兼容,不能向下兼容,如果你的语法是2.3的可以转换为3.0的,但是转换不一定成功
五、控制台输出
控制台是大家最长用的从Xcode8beta1 OC控制台不NSLog不输出,到以后控制台都输出一大堆系统信息等等,大家很烦,其实军哥也很烦,例如:
看到这里想必大家都想禁止,但是如何禁止呢
OS_ACTIVITY_MODE disable
PS: 知道你不明白这个是什么意思,接下来上图
PS:每个新工程都需要配置,也是略微的忧伤,不过相比之下控制台输出没办法解决好多了
六、字体改变
Xcode8中用的字体是San Francisco Mono字体
七、代码高亮当前行,看上图
PS:再也不用代码高亮行的插件了
八、代码调试支持Runtime
Xcode8新增Runtime调试,界面可以展示运行时的问题,改善的界面调试对于调试不清晰或者不满意的布局变的更简单
九、代码签名
Xcode8之后必须用代码签名,包括第三方SDK也需要代码签名,好的一点是苹果提供自动代码签名
十、文档
文档焕然一新,分为Swift 和OC文档,具体看图
十一、UIColor新增了2个API,我们之前都是RGB设置颜色,现在我们可以使用sRGB来设置颜色,这样的好处是性能更加好,色彩也更丰富。
+(UIColor *)colorWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
-(UIColor *)initWithDisplayP3Red:(CGFloat)displayP3Red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha NS_AVAILABLE_IOS(10_0);
十二、关于UIStatusBar方法过期,新增其他API修改UIStatusBar
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}
十三、推送
在更新之后,推送这块更改了是比较大的。首先所有相关的通知都被放到UserNotifications框架里面,并且增加了撤销,更新,中途修改通知内容等,而且通知不仅仅只是简单的文本通知,还可以加入视频,图片等进行通知。推送流程:
申请和注册 -> 创建和发送推送 -> 展示和处理推送
申请权限已经不用区分本地和远程了,iOS统一了API
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError * _Nullable error){ if(granted){
} else {
}
}];
发送通知也有了一个比较统一的流程
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc]init];
content.body=@"标题";
content.subtitle=@"推送";
NSString*identifier =@"notification";
UNTimeIntervalNotificationTrigger *tigger =[UNTimeIntervalNotificationTrigger triggerWithTimeInterval:3repeats:NO]; UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:identifier content:content trigger:tigger]; [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:request withCompletionHandler:^(NSError* _Nullable error) {
if(error) {
NSLog(@"%@",error);
} }];
UNMutableNotificationContent为推送内容的主体类,里面的属性可以对推送内容进行编辑。
identifier是对此推送的唯一标识
UNTimeIntervalNotificationTrigger是针对本地的一个触发器,可以延迟进行推送。UNCalendarNotificationTrigger,在某月某日某时定时触发推送。UNLocationNotificationTrigger,当用户离开或者进入某地区触发推送。
十四、ATS的问题
目前来说对我们没影响但是在2017年1月1日起,苹果不允许我们使用将NSAllowsArbitraryLoads设置为YES的方式跳过ATS。否则提交APP可能会被拒绝。所以这里的解决方法就是。