10电子科技

1.Notification(通知)

自从Notification于引入之后,苹果就连发的更新优化,但这个更新优化只是小打小闹,直至现在iOS
10方始真正的进展大改重构,这让开发者也体会至UserNotifications的易用,效用也换得要命有力。

  • iOS 9 以前的关照

    1.每当调用方法时,有些计被人蛮麻烦分,容易写错方法,这给开发者有时候很心烦。

    2.采用在运作时以及无运行时捕获通知之门路还非一样。

    3.施用在前台时,是无力回天直接显示远程通告,还亟需更处理。

    4.已经起的通告是不克改进的,内容发生时凡匪可知改之,并且唯有大概文本显示形式,增添性根本无是万分好。

  • iOS 10 起头的关照

    1.所有相关通告于合到了UserNotifications.framework框架中。

    2.加了收回、更新、中途还足以修改通告之始末。

    3.通知不以是简约的文本了,可以在视频、图片,自定义布告之呈现等等。

    4.iOS
    10针锋相对在此之前的通告来说更是好用易于管理,并且开展了普遍优化,对于开发者来说是同项好事。

    5.iOS
    10起始对权力问题展开了优化,申请权限就相比较简单了(本地同长途通告并在一个艺术被)。

  • iOS 10 通告上有关材料:

[UserNotifications:

苹果官方文档](https://link.jianshu.com?t=https%3A%2F%2Fdeveloper.apple.com%2Freference%2Fusernotifications)

苹果官方看来频1

苹果官方看来频2

苹果官方录像3
活久见的重构 – iOS 10 UserNotifications
框架解析

WWDC2016 Session笔记 – iOS 10
推送Notification新特性

2.ATS的问题

iOS
9中默认HTTP的纱是勿推荐下的,当然我们呢可拿NSAllowsArbitraryLoads设置为YES禁用ATS。但是iOS
10自二零一七年11月1日自苹果不同意我们由此是点子跳了ATS,也就是说强制大家之所以HTTPS,假使未这样的话提交App可能会合为驳回。但是大家可由此NSExceptionDomains来针对特定的域名开放HTTP好好通过查处。

参考学习作品如下:
关于 iOS 10 中 ATS
的问题

3.iOS 10 隐私权限设置

iOS 10
初步针对隐私权限更加严厉,假若您不装就会直接倒,现在游人如织碰面崩溃问题了,一般解决办法都是当info.plist文本添加对应的KeyValue就是足以了。

以上Value价值,圈有之红线部分的仿是显得让用户看之,需要团结充足规范的唤起表达,不克也空。近期解决办法基本还一模一样,参考学习著作如下:
兼容iOS
10:配置获取隐私数据权限注解

4.Xcode 8 运行一积聚没由此之logs解决办法

上图我们看出,自己新建的一个工啥吧未曾提到就是打印一积聚烂七八糟的事物,我认为这相应是Xcode 8的题材,具体也从不仔细探讨,解决办法是安OS_ACTIVITY_MODE : disable如下图:

连锁问题总是:
stackoverflow问答

5.iOS 10 UIStatusBar方法过期:

于我们开中有或因而到UIStatusBar有些特性,在iOS 10
中这一个格局都过了,假如您的花色蒙有效之语句就得待适配。下边的图也克窥见,倘若在iOS
10备受您用利用preferredStatusBar按这样:

//iOS 10 
- (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleDefault;
}

6.iOS 10 UICollectionView 性能优化

乘胜开发者对UICollectionView的亲信,项目被因故底地点吧正如多,不过如故存在有的题材,比如偶尔会卡顿、加载慢等。所以iOS
10
UICollectionView愈来愈的优化,因为叙述起来相比复杂耗费时间,在此地仅提供上参考作品如下:
WWDC2016 Session笔记 – iOS 10
UICollectionView新特性

7.iOS 10 UIColor 新增方法

以下是官文档的辨证:

Most graphics frameworks throughout the system, including Core Graphics,
Core Image, Metal, and AVFoundation, have substantially improved support
for extended-range pixel formats and wide-gamut color spaces. By
extending this behavior throughout the entire graphics stack, it is
easier than ever to support devices with a wide color display. In
addition, UIKit standardizes on working in a new extended sRGB color
space, making it easy to mix sRGB colors with colors in other, wider
color gamuts without a significant performance penalty.

Here are some best practices to adopt as you start working with Wide
Color.

  • In iOS 10, the UIColor class uses the extended sRGB color space and
    its initializers no longer clamp raw component values to between 0.0
    and 1.0. If your app relies on UIKit to clamp component values
    (whether you’re creating a color or asking a color for its component
    values), you need to change your app’s behavior when you link
    against iOS 10.
  • When performing custom drawing in a UIView on an iPad Pro (9.7
    inch), the underlying drawing environment is configured with an
    extended sRGB color space.
  • If your app renders custom image objects, use the new
    UIGraphicsImageRenderer class to control whether the destination
    bitmap is created using an extended-range or standard-range format.
  • If you are performing your own image processing on wide-gamut
    devices using a lower level API, such as Core Graphics or Metal, you
    should use an extended range color space and a pixel format that
    supports 16-bit floating-point component values. When clamping of
    color values is necessary, you should do so explicitly.
  • Core Graphics, Core Image, and Metal Performance Shaders provide new
    options for easily converting colors and images between color
    spaces.

因事先我们且是由此RGB来装颜色,反正用起呢不是特地多样化,这一次新增的办法应该就是是一个弥补吧。所以在iOS
10
苹果官方提出我们下sRGB,因为其性能再好,色彩更充分。假设您自己吧UIColor描绘了一如既往拟分类的言辞也然则尝试替换为sRGBUIColor类吃新增了少单Api如下:

+ (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);

8.iOS 10 UITextContentType

// The textContentType property is to provide the keyboard with extra information about the semantic intent of the text document.

@property(nonatomic,copy) UITextContentType textContentType NS_AVAILABLE_IOS(10_0); // default is nil

在iOS 10
UITextField添加了textContentType枚举,提示文本输入区域所要的语义意义。

以此属性可以让键盘与系信息,关于用户输入的情之料想的语义意义。例如,您可指定一个文本字段,用户填写收到一模一样封电子邮件确认uitextcontenttypeemailaddress。当你提供关于您希望用户以文书输入区域被输入的情的信息日常,系统可以以某些情形下自行采纳适宜的键盘,并加强键盘修正和主动跟其他文件输入会的结。

9.iOS 10 字体随初始机系统字体而改

当我们手机系统字体改变了后,这我们Applabel否会就一块儿变,这得我们刻画过多代码来更处理才兑现,不过iOS
10
提供了这样的性adjustsFontForContentSizeCategory来装。因为尚未真机,具体实际操作还不曾夺落实,假若精晓错协理指正。

  UILabel *myLabel = [UILabel new];

   /*
    UIFont 的preferredFontForTextStyle: 意思是指定一个样式,并让字体大小符合用户设定的字体大小。
   */
    myLabel.font =[UIFont preferredFontForTextStyle: UIFontTextStyleHeadline];

 /*
 Indicates whether the corresponding element should automatically update its font when the device’s UIContentSizeCategory is changed.
 For this property to take effect, the element’s font must be a font vended using +preferredFontForTextStyle: or +preferredFontForTextStyle:compatibleWithTraitCollection: with a valid UIFontTextStyle.
 */
     //是否更新字体的变化
    myLabel.adjustsFontForContentSizeCategory = YES;

10.iOS 10 UIScrollView新增refreshControl

iOS 10 未来如是后续UIScrollView那么尽管协助刷新效率:

@property (nonatomic, strong, nullable) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(10_0) __TVOS_PROHIBITED;

11.iOS 10 判断系版本是姿势

看清系版本是大家通常使用的,尤其是今我们都发或需要适配iOS
10,那么问题就涌出了,如下图:

我们得到了答案是:

//值为 1
[[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue]
//值为10.000000
[[UIDevice currentDevice] systemVersion].floatValue,
//值为10.0
[[UIDevice currentDevice] systemVersion]

所以说判断系方法极其好要用后的点滴种植办法,哦~我记不清说了[[UIDevice currentDevice] systemVersion].floatValue这一个方法为是匪借助于谱的,好像在8.3本子输出的值是8.2,记不知底了反倒正是不借助于谱的,所以提议我们于是[[UIDevice currentDevice] systemVersion]此办法!

斯维夫特(Swift)(Swift)判断如下:

  if #available(iOS 10.0, *) {
            // iOS 10.0
            print("iOS 10.0");
        } else { }

参考小说如下:
iOS 平时工作之常由此宏定义大全

12.Xcode 8 插件不可知就此底题材

我们都升级了Xcode 8,然则于插件依赖之开发者们,一边哭着一面去网上查找解决办法。那么下边是解决办法:
为你的 Xcode8
继续拔取插件

但看到作品最后之分解,我们清楚如若就此插件的话语,可能安全上汇合生出问题、并且付诸审核会被拒绝,所以指出我们要不要为此了,解决办法总是有,比如当Xcode中添加注释的代码块呢是雅方便之。

13.iOS 10先河项目受到有的文字显示不净问题

我用Xcode 8Xcode 7.3分级测试了产,如下图:

Xcode 8

Xcode 7

成立一个Label然后给她从适应大小,字体大小都是17最后输出的幅度是不同等的,大家再次拘留一下,上边的多寡就知道怎么升级iOS 10
之后App遭有些文字显示不统了:

Xcode 8打印 Xcode 7.3打印
1个文字宽度:17.5 1个文字宽度:17
2个文字宽度:35 2个文字宽度:34
3个文字宽度:52 3个文字宽度:51
4个文字宽度:69.5 4个文字宽度:68
5个文字宽度:87 5个文字宽度:85
6个文字宽度:104 6个文字宽度:102
7个文字宽度:121.5 7个文字宽度:119
8个文字宽度:139 8个文字宽度:136
9个文字宽度:156 9个文字宽度:153
10个文字宽度:173.5 10个文字宽度:170

英文字母会无会师否起这种题材,我以经测试,后来意识英文字母没有问题,只有汉字有问题。方今只有一个一个窜控件解决是题材,暂时没外好情势来解决。

14.Xcode 8用到Xib awakeFromNib的警戒问题

(本条更新让:2016-09-18)
Xcode 8事先我们采取Xib初始化- (void)awakeFromNib {}都是这么写啊并未什么问题,但是在Xcode 8会面来如下警告:

苟未喜这些警示的话,应该分明的丰盛[super awakeFromNib];我们来探视官方认证:

You must call the super implementation of awakeFromNib to give parent
classes the opportunity to perform any additional initialization they
require. Although the default implementation of this method does
nothing, many UIKit classes provide non-empty implementations. You may
call the super implementation at any point during your own
awakeFromNib method.

15.Xcode 8编译过慢的题目

(本条更新受:2016-09-20)
群人数且反映Xcode 8尚未事先编译快了,甚至有点人逐步悠悠的辣眼睛。可是我的从未有过感到特别缓慢,跟在此之前多,我认为同电脑当暴发部分关联吧,有的开发者几单月未还开电脑,电脑里运行一积聚线程,一积聚没由此的渣。下边是加快Xcode编译的不二法门,感兴趣之足错过押一下:
增强Xcode编译速度

16.iOS 10 ImagePickerController.cameraViewTransform问题

(本条更新受:2016-09-21)
过多丁反映自定义相机现身了问题,cameraViewTransform未克用了,其实网上关于此的素材不是过多,在此间提供参考办法如下:

  • 经过监听AVCaptureSessionDidStartRunningNotification来解决

  //#import <AVFoundation/AVFoundation.h>
  //监听
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cameraNotification:) name:AVCaptureSessionDidStartRunningNotification object:nil];
  //监听方法
  - (void)cameraNotification:(NSNotification *)notification {
    dispatch_async(dispatch_get_main_queue(), ^{
          // 这里实现
          imagePickerController.cameraViewTransform = CGAffineTransformMakeTranslation(50,  50);
      });
  }

正文就吧重整iOS 10 相关资料,也参照部分网上的稿子,还会合陆续更新任何iOS
10 相关资料,以及开发中相见的问题等等。
本小说先发地址:http://www.jianshu.com/p/0cc7aad638d9
iOS 10
苹果官方文档

相关文章