iOS10資料和Xcode8的新特性和坑<二>

一、iOS 10中UIstatusBar方法過(guò)期:


在我們開(kāi)發(fā)中 有可能用到UIStatusBar的一些屬性翎冲,在iOS 10中這些方法已經(jīng)過(guò)期不能使用垂睬,如果你的項(xiàng)目中有用的話就得需要適配。通過(guò)上面的圖片也可以發(fā)現(xiàn)抗悍,如果在iOS 10中你需要使用preferredStatusBar比如以下:

iOS 10- (UIStatusBarStyle)preferredStatusBarStyle {returnUIStatusBarStyleDefault;

}

二驹饺、iOS 10 中UICollectionView的性能優(yōu)化

隨著我們開(kāi)發(fā)者對(duì)UICollectionVIew的信賴,項(xiàng)目當(dāng)中用得到的地方特別多缴渊,但是還是存在一些問(wèn)題赏壹,比如卡頓,加載緩慢等衔沼。所以iOS10對(duì)UICollectionView進(jìn)行了進(jìn)一步的優(yōu)化蝌借,主要體現(xiàn)在了三個(gè)方面:1、順滑的滑動(dòng)體驗(yàn):只要加入少量的代碼就能夠?qū)崿F(xiàn)指蚁。2菩佑、針對(duì)self-sizing的改進(jìn):self-sizing的API在iOS8的時(shí)候被引進(jìn),iOS10中加入更多特性是cell更加容易去適配欣舵;3擎鸠、interactive-reordering重拍:在iOS9中重點(diǎn)介紹過(guò)了,在iOS10的API里面大大增強(qiáng)了這一功能缘圈。就到這里這三點(diǎn)在復(fù)雜就不一一介紹了看連接:WWDC2016 Session筆記 - iOS 10 UICollectionView新特性

三劣光、iOS 10 UIColor 新增方法

以下是官方文檔的說(shuō)明:

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.

因?yàn)橹拔覀兌际怯肦GB來(lái)設(shè)置顏色,反正用起來(lái)也不是特別多樣化糟把,這次新增的方法應(yīng)該就是一個(gè)彌補(bǔ)吧绢涡。所以在iOS 10 蘋(píng)果官方建議我們使用sRGB,因?yàn)樗阅芨们卜瑁矢S富雄可。如果你自己為UIColor寫(xiě)了一套分類的話也可嘗試替換為sRGB,UIColor類中新增了兩個(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);

四、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ū)域所期望的語(yǔ)義意義聪舒。

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

五盼理、iOS 10 字體隨著手機(jī)系統(tǒng)字體而改變

當(dāng)我們手機(jī)系統(tǒng)字體改變了之后,那我們App的label也會(huì)跟著一起變化俄删,這需要我們寫(xiě)很多代碼來(lái)進(jìn)一步處理才能實(shí)現(xiàn)宏怔,但是iOS 10 提供了這樣的屬性adjustsFontForContentSizeCategory來(lái)設(shè)置。因?yàn)闆](méi)有真機(jī)抗蠢,具體實(shí)際操作還沒(méi)去實(shí)現(xiàn)举哟,如果理解錯(cuò)誤幫忙指正。

UILabel*myLabel = [UILabelnew];/*

UIFont 的preferredFontForTextStyle: 意思是指定一個(gè)樣式迅矛,并讓字體大小符合用戶設(shè)定的字體大小妨猩。

*/myLabel.font=[UIFontpreferredFontForTextStyle: 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;

六、iOS 10 UIScrollView新增refreshControl


iOS 10 以后只要是繼承UIScrollView那么就支持刷新功能:

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

七秽褒、iOS 10 判斷系統(tǒng)版本正確姿勢(shì)

判斷系統(tǒng)版本是我們經(jīng)常用到的壶硅,尤其是現(xiàn)在大家都有可能需要適配iOS 10,那么問(wèn)題就出現(xiàn)了销斟,如下圖:


我們得到了答案是:

//值為 1

[[[[UIDevice currentDevice] systemVersion] substringToIndex:1] integerValue]

//值為10.000000

[[UIDevice currentDevice] systemVersion].floatValue,//值為10.0

[[UIDevice currentDevice] systemVersion]庐椒;

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

Swift判斷如下:

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

參考文章如下:

iOS 日常工作之常用宏定義大全

八棱诱、Xcode 8 插件不能用的問(wèn)題

大家都升級(jí)了Xcode 8,但是對(duì)于插件依賴的開(kāi)發(fā)者們涝动,一邊哭著一邊去網(wǎng)上尋找解決辦法迈勋。那么下面是解決辦法:

讓你的 Xcode8 繼續(xù)使用插件

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

九、iOS 10開(kāi)始項(xiàng)目中有的文字顯示不全問(wèn)題

我用Xcode 8 和Xcode 7.3分別測(cè)試了下泳唠,如下圖:


創(chuàng)建一個(gè)Label然后讓它自適應(yīng)大小狈网,字體大小都是17最后輸出的寬度是不一樣的,我們?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ì)也有這種問(wèn)題绽慈,我又通過(guò)測(cè)試灶搜,后來(lái)發(fā)現(xiàn)英文字母沒(méi)有問(wèn)題宗雇,只有漢字有問(wèn)題舒岸。目前只有一個(gè)一個(gè)修改控件解決這個(gè)問(wèn)題灼伤,暫時(shí)沒(méi)有其他好辦法來(lái)解決葛躏。

十叼丑、Xcode 8使用Xib awakeFromNib的警告問(wèn)題

在Xcode 8之前我們使用Xib初始化- (void)awakeFromNib {}都是這么寫(xiě)也沒(méi)什么問(wèn)題扯罐,但是在Xcode 8會(huì)有如下警告:

如果不喜歡這個(gè)警告的話讼积,應(yīng)該明確的加上[super awakeFromNib];我們來(lái)看看官方說(shuō)明:

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.

十一肥照、Xcode 8編譯過(guò)慢的問(wèn)題

很多人都反映Xcode 8沒(méi)有之前編譯快了,甚至有些人慢的辣眼睛勤众。但是我的沒(méi)有感覺(jué)很慢舆绎,跟之前差不多,我覺(jué)得跟電腦應(yīng)該有一些聯(lián)系吧们颜,有的開(kāi)發(fā)者幾個(gè)月不重啟電腦吕朵,電腦里運(yùn)行一堆線程,一堆沒(méi)用的垃圾窥突。下面是加速Xcode編譯的方法努溃,感興趣的可以去看一下:

提高Xcode編譯速度

十二、iOS 10 ImagePickerController.cameraViewTransform問(wèn)題

很多人反映自定義相機(jī)出現(xiàn)了問(wèn)題阻问,cameraViewTransform不能用了梧税,其實(shí)網(wǎng)上關(guān)于這個(gè)的資料不是很多,在這里提供參考辦法如下:

通過(guò)監(jiān)聽(tīng)AVCaptureSessionDidStartRunningNotification來(lái)解決

//#import //監(jiān)聽(tīng)[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(cameraNotification:) name:AVCaptureSessionDidStartRunningNotification object:nil];//監(jiān)聽(tīng)方法- (void)cameraNotification:(NSNotification*)notification {dispatch_async(dispatch_get_main_queue(), ^{// 這里實(shí)現(xiàn)imagePickerController.cameraViewTransform= CGAffineTransformMakeTranslation(50,50);

});

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末称近,一起剝皮案震驚了整個(gè)濱河市第队,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煌茬,老刑警劉巖斥铺,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異坛善,居然都是意外死亡晾蜘,警方通過(guò)查閱死者的電腦和手機(jī)邻眷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剔交,“玉大人肆饶,你說(shuō)我怎么就攤上這事♂#” “怎么了驯镊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)竭鞍。 經(jīng)常有香客問(wèn)我板惑,道長(zhǎng),這世上最難降的妖魔是什么偎快? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任冯乘,我火速辦了婚禮,結(jié)果婚禮上晒夹,老公的妹妹穿的比我還像新娘裆馒。我一直安慰自己,他們只是感情好丐怯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布喷好。 她就那樣靜靜地躺著,像睡著了一般读跷。 火紅的嫁衣襯著肌膚如雪梗搅。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天舔亭,我揣著相機(jī)與錄音些膨,去河邊找鬼。 笑死钦铺,一個(gè)胖子當(dāng)著我的面吹牛订雾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矛洞,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼洼哎,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了沼本?” 一聲冷哼從身側(cè)響起噩峦,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抽兆,沒(méi)想到半個(gè)月后识补,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辫红,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年凭涂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祝辣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡切油,死狀恐怖蝙斜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情澎胡,我是刑警寧澤孕荠,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站攻谁,受9級(jí)特大地震影響稚伍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜巢株,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一槐瑞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阁苞,春花似錦、人聲如沸祠挫。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)等舔。三九已至骚灸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間慌植,已是汗流浹背甚牲。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝶柿,地道東北人丈钙。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像交汤,于是被迫代替她去往敵國(guó)和親雏赦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容