Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

最全面的Xcode 8 带来的新特性。

$
0
0

一、首先看欢迎界面,这个是我们开发者经常接触的


欢迎界面扁平化网格去掉,是不是好看很多了

二、创建工程更加人性化


常用的放在最前面
  • 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
      中型 136
      136
      大型 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:苹果越来越开放


语法切换

默认

3.0

2.3
  • 语法转换
    当然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可能会被拒绝。所以这里的解决方法就是。








作者:qq_31518167 发表于2016/10/26 16:16:54 原文链接
阅读:33 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>