多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > 綜合技術(shù) > iOS10XCode8適配各種問題(相對(duì)其他的較完善)

iOS10XCode8適配各種問題(相對(duì)其他的較完善)

來源:程序員人生   發(fā)布時(shí)間:2016-09-30 10:54:06 閱讀次數(shù):3497次

本文轉(zhuǎn)載自簡(jiǎn)書,存粹為了分享和方便下次使用,作者和鏈接在文章下方有寫,如果作者制止轉(zhuǎn)載請(qǐng)告知我以便及時(shí)刪除Q:1076860592

1.Notification(通知)

自從Notification被引入以后,蘋果就不斷的更新優(yōu)化,但這些更新優(yōu)化只是小打小鬧,直至現(xiàn)在iOS 10開始真實(shí)的進(jìn)行大改重構(gòu),這讓開發(fā)者也體會(huì)到UserNotifications的易用,功能也變得非常強(qiáng)大。

  • iOS 9 之前的通知

    1.在調(diào)用方法時(shí),有些方法讓人很難辨別,容易寫錯(cuò)方法,這讓開發(fā)者有時(shí)候很苦惱。

    2.利用在運(yùn)行時(shí)和非運(yùn)行時(shí)捕獲通知的路徑還不1致。

    3.利用在前臺(tái)時(shí),是沒法直接顯示遠(yuǎn)程通知,還需要進(jìn)1步處理。

    4.已發(fā)出的通知是不能更新的,內(nèi)容發(fā)出時(shí)是不能改變的,并且只有簡(jiǎn)單文本展現(xiàn)方式,擴(kuò)大性根本不是很好。

  • iOS 10 開始的通知

    1.所有相干通知被統(tǒng)1到了UserNotifications.framework框架中。

    2.增加了撤消、更新、中途還可以修改通知的內(nèi)容。

    3.通知不在是簡(jiǎn)單的文本了,可以加入視頻、圖片,自定義通知的展現(xiàn)等等。

    4.iOS 10相對(duì)之前的通知來講更加好用易于管理,并且進(jìn)行了大范圍優(yōu)化,對(duì)開發(fā)者來講是1件好事。

    5.iOS 10開始對(duì)權(quán)限問題進(jìn)行了優(yōu)化,申請(qǐng)權(quán)限就比較簡(jiǎn)單了(本地與遠(yuǎn)程通知集成在1個(gè)方法中)。

  • iOS 10 通知學(xué)習(xí)相干資料:

    UserNotifications: 蘋果官方文檔 - 蘋果官方視頻1 - 蘋果官方視頻2 - 蘋果官方視頻3
    活久見的重構(gòu) - iOS 10 UserNotifications 框架解析
    WWDC2016 Session筆記 - iOS 10 推送Notification新特性

2.ATS的問題

iOS 9中默許HTTP的網(wǎng)絡(luò)是不推薦使用的,固然我們也能夠把NSAllowsArbitraryLoads設(shè)置為YES禁用ATS。不過iOS 10從2017年1月1日起蘋果不允許我們通過這個(gè)方法跳過ATS,也就是說強(qiáng)迫我們用HTTPS,如果不這樣的話提交App可能會(huì)被謝絕。但是我們可以通過NSExceptionDomains來針對(duì)特定的域名開放HTTP可以容易通過審核。

參考學(xué)習(xí)文章以下:
關(guān)于 iOS 10 中 ATS 的問題

3.iOS 10 隱私權(quán)限設(shè)置

iOS 10 開始對(duì)隱私權(quán)限更加嚴(yán)格,如果你不設(shè)置就會(huì)直接崩潰,現(xiàn)在很多遇到崩潰問題了,1般解決辦法都是在info.plist文件添加對(duì)應(yīng)的Key-Value就能夠了。


以上Value值,圈出的紅線部份的文字是展現(xiàn)給用戶看的,需要自己添加規(guī)范的提示說明,不能為空。目前解決辦法基本都1樣,參考學(xué)習(xí)文章以下:
兼容iOS 10:配置獲得隱私數(shù)據(jù)權(quán)限聲明

4.Xcode 8 運(yùn)行1堆沒用的logs解決辦法


上圖我們看到,自己新建的1個(gè)工程啥也沒干就打印1堆爛78糟的東西,我覺得這個(gè)應(yīng)當(dāng)是Xcode 8的問題,具體也沒細(xì)研究,解決辦法是設(shè)置OS_ACTIVITY_MODE : disable以下圖:


相干問題連接:
stackoverflow問答

5.iOS 10 UIStatusBar方法過期:


在我們開發(fā)中有可能用到UIStatusBar1些屬性,在iOS 10 中這些方法已過期了,如果你的項(xiàng)目中有用的話就得需要適配。上面的圖片也能發(fā)現(xiàn),如果在iOS 10中你需要使用preferredStatusBar比如這樣:

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

6.iOS 10 UICollectionView 性能優(yōu)化

隨著開發(fā)者對(duì)UICollectionView的信賴,項(xiàng)目中用的地方也比較多,但是還是存在1些問題,比如有時(shí)會(huì)卡頓、加載慢等。所以iOS 10 對(duì)UICollectionView進(jìn)1步的優(yōu)化,由于敘述起來比較復(fù)雜耗費(fèi)時(shí)間,在這里只提供學(xué)習(xí)參考文章以下:
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來設(shè)置色彩,反正用起來也不是特別多樣化,這次新增的方法應(yīng)當(dāng)就是1個(gè)彌補(bǔ)吧。所以在iOS 10 蘋果官方建議我們使用sRGB,由于它性能更好,色采更豐富。如果你自己為UIColor寫了1套分類的話也可嘗試替換為sRGBUIColor類中新增了兩個(gè)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枚舉,唆使文本輸入?yún)^(qū)域所期望的語義意義。

使用此屬性可以給鍵盤和系統(tǒng)信息,關(guān)于用戶輸入的內(nèi)容的預(yù)期的語義意義。例如,您可以指定1個(gè)文本字段,用戶填寫收到1封電子郵件確認(rèn)uitextcontenttypeemailaddress。當(dāng)您提供有關(guān)您期望用戶在文本輸入?yún)^(qū)域中輸入的內(nèi)容的信息時(shí),系統(tǒng)可以在某些情況下自動(dòng)選擇適當(dāng)?shù)逆I盤,并提高鍵盤修正和主動(dòng)與其他文本輸入機(jī)會(huì)的整合。

9.iOS 10 字體隨著手機(jī)系統(tǒng)字體而改變

當(dāng)我們手機(jī)系統(tǒng)字體改變了以后,那我們Applabel也會(huì)隨著1起變化,這需要我們寫很多代碼來進(jìn)1步處理才能實(shí)現(xiàn),但是iOS 10 提供了這樣的屬性adjustsFontForContentSizeCategory來設(shè)置。由于沒有真機(jī),具體實(shí)際操作還沒去實(shí)現(xiàn),如果理解毛病幫忙指正。

UILabel *myLabel = [UILabel new]; /* UIFont 的preferredFontForTextStyle: 意思是指定1個(gè)樣式,并讓字體大小符適用戶設(shè)定的字體大小。 */ 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 判斷系統(tǒng)版本正確姿式

判斷系統(tǒng)版本是我們常常用到的,特別是現(xiàn)在大家都有可能需要適配iOS 10,那末問題就出現(xiàn)了,以下圖:


我們得到了答案是:

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

所以說判斷系統(tǒng)方法最好還是用后面的兩種方法,哦~我忘記說了[[UIDevice currentDevice] systemVersion].floatValue這個(gè)方法也是不靠譜的,好像在8.3版本輸出的值是8.2,記不清楚了反正是不靠譜的,所以建議大家用[[UIDevice currentDevice] systemVersion]這個(gè)方法!

Swift判斷以下:

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

參考文章以下:
iOS 平常工作之經(jīng)常使用宏定義大全

12.Xcode 8 插件不能用的問題

大家都升級(jí)了Xcode 8,但是對(duì)插件依賴的開發(fā)者們,1邊哭著1邊去網(wǎng)上尋覓解決辦法。那末下面是解決辦法:
讓你的 Xcode8 繼續(xù)使用插件

但是看到文章最后的解釋,我們知道如果用插件的話,可能安全上會(huì)有問題、并且提交審核會(huì)被謝絕,所以建議大家還是不要用了,解決辦法總是有的,比如在Xcode中添加注釋的代碼塊也是很方便的。

13.iOS 10開始項(xiàng)目中有的文字顯示不全問題

我用Xcode 8Xcode 7.3分別測(cè)試了下,以下圖:


Xcode 8

Xcode 7

創(chuàng)建1個(gè)Label然后讓它自適應(yīng)大小,字體大小都是17最后輸出的寬度是不1樣的,我們?cè)倏?下,下面的數(shù)據(jù)就知道為何升級(jí)iOS 10 以后App中有的文字顯示不全了:

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

英文字母會(huì)不會(huì)也有這類問題,我又通過測(cè)試,后來發(fā)現(xiàn)英文字母沒有問題,只有漢字有問題。目前只有1個(gè)1個(gè)修改控件解決這個(gè)問題,暫時(shí)沒有其他好辦法來解決。

14.Xcode 8使用Xib awakeFromNib的正告問題

(本條更新于:2016-09⑴8)
Xcode 8之前我們使用Xib初始化- (void)awakeFromNib {}都是這么寫也沒甚么問題,但是在Xcode 8會(huì)有以下正告:


如果不喜歡這個(gè)正告的話,應(yīng)當(dāng)明確的加上[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⑵0)
很多人都反應(yīng)Xcode 8沒有之前編譯快了,乃至有些人慢的辣眼睛。但是我的沒有感覺很慢,跟之前差不多,我覺得跟電腦應(yīng)當(dāng)有1些聯(lián)系吧,有的開發(fā)者幾個(gè)月不重啟電腦,電腦里運(yùn)行1堆線程,1堆沒用的垃圾。下面是加速Xcode編譯的方法,感興趣的可以去看1下:
提高Xcode編譯速度


文/判若兩人丶(簡(jiǎn)書作者)
原文鏈接:http://www.jianshu.com/p/0cc7aad638d9

點(diǎn)擊打開鏈接


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------

上一篇 我的文檔

下一篇 加薪與離職

分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 手机看片精品国产福利盒子 | 黄色录像大片毛片aa | 自拍偷拍第一页 | 亚洲国产精品第一区二区 | 中文字幕天天躁夜夜狠狠综合 | 手机看片地址 | 在线看片亚洲 | 亚洲a在线播放 | 国产成人永久免费视频 | 欧美另类xxxxhd高清 | 日本a毛片在线播放 | 亚洲色图欧美在线 | 日韩欧| 日韩欧美国产精品第一页不卡 | 国产高清精品一区 | 成人老司机深夜福利久久 | 九九这里有精品 | 欧美成人精品福利在线视频 | 国产一级淫片a视频免费观看 | 视频在线观看高清免费 | 国产精品久久久久久久久免费观看 | 手机看片福利日韩国产 | 国产91久久精品 | 91精品国产色综合久久不 | 中文国产成人精品少久久 | 欧美bbwxxxx| www国产精品com | 国产视频 每日更新 | 欧美另类小说乱小说 | 男女免费在线视频 | 精品欧美日韩一区二区 | 亚洲图片综合 | 日韩中文字幕精品免费一区 | 波多野结衣一区二区三区在线观看 | 一级欧美毛片成人 | 亚欧成人在线 | 国产成人亚洲精品91专区手机 | 就操网 | 亚洲精品亚洲人成在线 | 精品久久久久久亚洲精品 | 亚洲性网 |