iOS10 适配

系统适配

iOS 10 已经出来有一段时间了,beta版没有勇气去尝试,在苹果推送正式版之后马上升级,首先还是看了一下自己的APP是否有崩溃的问题,不过都还好问题不大,哈哈!!!

1、使用权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

<!-- 相册 -->
<key>NSPhotoLibraryUsageDescription</key>

<string>App需要您的同意,才能访问相册</string>

<!-- 相机 -->
<key>NSCameraUsageDescription</key>

<string>App需要您的同意,才能访问相机</string>

<!-- 麦克风 -->
<key>NSMicrophoneUsageDescription</key>

<string>App需要您的同意,才能访问麦克风</string>
<!-- 位置 -->

<key>NSLocationUsageDescription</key>

<string>App需要您的同意,才能访问位置</string>

<!-- 在使用期间访问位置 -->

<key>NSLocationWhenInUseUsageDescription</key>

<string>App需要您的同意,才能在使用期间访问位置</string>

<!-- 始终访问位置 -->

<key>NSLocationAlwaysUsageDescription</key>

<string>App需要您的同意,才能始终访问位置</string>

<!-- 日历 -->

<key>NSCalendarsUsageDescription</key>

<string>App需要您的同意,才能访问日历</string>

<!-- 提醒事项 -->

<key>NSRemindersUsageDescription</key>

<string>App需要您的同意,才能访问提醒事项</string>

<!-- 运动与健身 -->

<key>NSMotionUsageDescription</key>

<string>App需要您的同意,才能访问运动与健身</string>

<!-- 健康更新 -->

<key>NSHealthUpdateUsageDescription</key>

<string>App需要您的同意,才能访问健康更新 </string>

<!-- 健康分享 -->

<key>NSHealthShareUsageDescription</key>

<string>App需要您的同意,才能访问健康分享</string>

<!-- 蓝牙 -->

<key>NSBluetoothPeripheralUsageDescription</key>

<string>App需要您的同意,才能访问蓝牙</string>

<!-- 媒体资料库 -->

<key>NSAppleMusicUsageDescription</key>

<string>App需要您的同意,才能访问媒体资料库</string>

直接下载

2、TabBarshadowImage设置

iOS10跟新之后之前tabbar设置shadowimage的方法不起作用了,但是这个
方法还是可以的

1
2
3
4
UITabBar *tabbar = [UITabBar appearance];
[tabbar setBackgroundImage:[UIImage new]];
[tabbar setShadowImage:[UIImage new]];

3、Label文字显示不全的问题

iOS 10更新后发现英文字母显示没问题,在显示中文的时候UILabel的宽度计算有问题

解决方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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;

目前没有找到可以整体修改的方法

4、真彩色的显示

真彩色的显示会根据光感应器来自动的调节达到特定环境下显示与性能的平衡效果,如果需要这个功能的话,可以在info.plist-Source Code里配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<key>UIWhitePointAdaptivityStyle</key>

它有五种取值,分别是:
// 标准模式
<string>UIWhitePointAdaptivityStyleStandard</string>
// 阅读模式
<string>UIWhitePointAdaptivityStyleReading</string>
// 图片模式
<string>UIWhitePointAdaptivityStylePhoto</string>
// 视频模式
<string>UIWhitePointAdaptivityStyleVideo</string>
// 游戏模式
<string>UIWhitePointAdaptivityStyleStandard</string>

五种模式的显示效果是从上往下递减,也就是说如果你的项目是图片处理类的,你选择的是阅读模式,给选择太好的效果会影响性能

5、更智能的键盘选择

系统可以在某些情况下自动选择适当的键盘,并提高键盘修正和主动与其他文本输入机会的整合。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// 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

UITextContentTypeName
UITextContentTypeNamePrefix
UITextContentTypeGivenName
UITextContentTypeMiddleName UITextContentTypeFamilyName
UITextContentTypeNameSuffix
UITextContentTypeNickname
UITextContentTypeJobTitle
UITextContentTypeOrganizationName
UITextContentTypeLocation
UITextContentTypeFullStreetAddres
UITextContentTypeStreetAddressLin
UITextContentTypeStreetAddressLin
UITextContentTypeAddressCity
UITextContentTypeAddressState
UITextContentTypeAddressCityAndSt
UITextContentTypeSublocality
UITextContentTypeCountryName
UITextContentTypePostalCode
UITextContentTypeTelephoneNumber
UITextContentTypeEmailAddress
UITextContentTypeURL
UITextContentTypeCreditCardNumber