iOS 11 SDK新特性

WWDC 2017 刚过去不久,新增了一些好东西,特别在硬件方面,在软件方面也有一些需要我们知道的东西,自己就怀着好奇心下载了 Xcode9.0-beta版本和手机版iOS 11,体验了几天内有几点自己的看法。

  1. Xcode9-beta版本比之前的beta 版本较稳定,在体验上还是比较满意的。
  2. 新改变的模拟器风格还是比较好看的,但是切换不同模拟器的时候之前打开的模拟器不会关闭,如打开很多模拟器 command + q退出的话就一键退出了,比较不喜欢。
  3. iOS 11 beta 版本(iPhone 6 Plus)用起来比较卡顿,切换应用的时候会出现闪动。在大屏上字体超大。
  4. 实际项目中存在着各种各样的bug,将在本文最后做些介绍。
    在苹果官网上其实已经有本次大会所新增的东西,不管是硬件方面还是软件方面,有兴趣的同学可以去体验下。苹果开发者文档
    新增框架
    Core ML : 作为机器学习模型转换为 iOS 可以开发的方式。
    ARKit :iOS 11 SDK 新增框架。
    Xcode 编译器
    Swift在OC和Swift混编上,编译器运行速度有点慢,但是Xcode9 编译速度上有所提升。在其中的编译器上进行了重写,支持了对 Swift 代码的重构,使用Swift重写的,并添加了GitHub的集成。如图所示:
    从左侧可以看出GitHub上主次分支,右侧分支代码提交的详细信息,开发者可以较快浏览项目进度。
    iOS 11 SDK新特性_第1张图片

自定义NameColor
在 Assets.xcassets 图片管理可以自定义颜色,在xib 或者storyboard选择颜色的时候可以看到自己自定义的 NameColor 如图所示:

iOS 11 SDK新特性_第2张图片
iOS 11 SDK新特性_第3张图片

Navigation Title
Navigation Title (iOS 11 之后) 采用了新的设计,放大了字体,prefersLargeTitles为true即可。
拖拽功能
UITextView,UITextField,UICollectionView,UITableView 支持原生拖拽。具体参考 苹果API。
Other Bug
ps:iOS 11适配可参考App适配iOS 11,可以解决这些bug。感谢 @爱睡觉的蘑菇的分享
在使用 xcode9.0 - beta 版本发现一些不正常的小 “错误”:

  1. 自定义 Navigation Bar 返回按钮,space.width = -20 负号失效,如以下用法:
 UIButton *gradeRuleButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [gradeRuleButton setImage:[UIImage imageNamed:@"gradeRule"] forState:UIControlStateNormal];
    gradeRuleButton.frame = CGRectMake(0,0, 40, 40);
    gradeRuleButton.backgroundColor = [UIColor yellowColor];
    gradeRuleButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    [gradeRuleButton addTarget:self action:@selector(gradeButtonAction:) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:gradeRuleButton];
    UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    space.width = - 20;  此处 -20将失效为0
    self.navigationItem.leftBarButtonItems = @[space,leftBarButtonItem];
  1. UITableView Group模式下,分区的时候,若设置某一区高度为固定值10,只需执行以下代码即可:
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     return 10;
}

在新编译器还必须执行以下自定义HeaderView方法才可生效。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 10)];
    header.backgroundColor = [UIColor redColor];
    return header;
}

参考链接:王巍(喵神)

你可能感兴趣的:(iOS 11 SDK新特性)