iOS 10適配以及Xcode8兼容問題總結(jié)

代碼注釋不能用的解決辦法
這個是因為蘋果解決xcode ghost,把插件屏蔽了徒爹。
解決方法
打開終端,命令運行: sudo /usr/libexec/xpccachectl
然后必須重啟電腦后生效
注意:Xcode8內(nèi)置了開啟注釋的功能芋类,位置在這里
屏蔽雜亂無章的bug
更新Xcode8之后隆嗅,新建立工程,都會打印一堆莫名其妙看不懂的Log.
如這些
subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1,
屏蔽的方法如下:
Xcode8里邊 Edit Scheme-> Run -> Arguments, 在Environment Variables里邊添加字典:
(name)OS_ACTIVITY_MODE = (value:)Disable

這里寫圖片描述

在設置log選項的時候侯繁,發(fā)現(xiàn)可以通過在Arguments中設置參數(shù)胖喳,打印出App加載的時長,包括整體加載時長贮竟,動態(tài)庫加載時長等丽焊。
在Environment Variables中添加DYLD_PRINT_STATISTICS字段,并設置為YES咕别,在控制臺就會打印加載時長技健。
考慮到添加上述內(nèi)容在Xcode8后,真機調(diào)試可能出現(xiàn)異常惰拱,大家可以自定義一個宏定義雌贱,來做日志輸出。

ifdef DEBUG

define DDLOG(…) printf(” %s\n”,[[NSString stringWithFormat:VA_ARGS]UTF8String]);

define DDLOG_CURRENT_METHOD NSLog(@”%@-%@”, NSStringFromClass([self class]), NSStringFromSelector(_cmd))

else

define DDLOG(…) ;

define DDLOG_CURRENT_METHOD ;

endif

字體適配的問題
ios 9 之前的lab 字體可以顯示全,但是到了ios10 發(fā)覺字體顯示不全了.得適配啊.app 會跟隨手機系統(tǒng)字體大小而改變了.
簡單粗暴地方法就是不讓他跟著手機系統(tǒng)的字體改變而改變.
myLabel.font =[UIFont preferredFontForTextStyle: UIFontTextStyleHeadline];
// UIFont 的preferredFontForTextStyle: 意思是指定一個樣式偿短,并讓字體大小符合用戶設定的字體大小欣孤。
/*
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.
*/
//是否更新字體的變化
label.adjustsFontForContentSizeCategory = YES;
字體變大,原有frame需要適配
發(fā)現(xiàn)程序內(nèi)Label標簽原來2個字的寬度是24昔逗,現(xiàn)在2個字需要27的寬度來顯示了曹阔。达椰。
iOS 10 開始的通知
1.所有相關(guān)通知被統(tǒng)一到了UserNotifications.framework框架中。
2.增加了撤銷橄碾、更新尝江、中途還可以修改通知的內(nèi)容尺锚。
3.通知不在是簡單的文本了席楚,可以加入視頻戳杀、圖片,自定義通知的展示等等卡乾。
4.iOS 10相對之前的通知來說更加好用易于管理翼悴,并且進行了大規(guī)模優(yōu)化缚够,對于開發(fā)者來說是一件好事幔妨。
5.iOS 10開始對于權(quán)限問題進行了優(yōu)化鹦赎,申請權(quán)限就比較簡單了(本地與遠程通知集成在一個方法中)。
所有的推送平臺误堡,不管是極光還是什么的古话,要想收到推送,這個是必須打開的

這里寫圖片描述

(void)userNotificationCenter:(UNUserNotificationCenter )center willPresentNotification:(UNNotification )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
//應用在前臺收到通知 NSLog(@”========%@”, notification);
}
推送的代理iOS10收到通知不再是在[application: didReceiveRemoteNotification:]方法去處理锁施, iOS10推出新的代理方法陪踩,接收和處理各類通知(本地或者遠程)
(void)userNotificationCenter:(UNUserNotificationCenter )center didReceiveNotificationResponse:(UNNotificationResponse )response withCompletionHandler:(void (^)())completionHandler {
//點擊通知進入應用 NSLog(@”response:%@”, response);
}
xcode8的注釋快捷鍵注釋不能用了, command+/ 不行了
解決辦法:
因為蘋果解決xcode ghost。把插件屏蔽了悉抵。解決方法
命令運行: sudo /usr/libexec/xpccachectl
然后必須重啟電腦后生效

這里寫圖片描述

顏色問題, iOS 10 蘋果官方建議我們使用sRGB肩狂,因為它性能更好,色彩更豐富姥饰。
UIColor類中新增了兩個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);
    判斷版本問題
    判斷系統(tǒng)版本是我們經(jī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這個方法也是不靠譜的,好像在8.3版本輸出的值是8.2岂座,記不清楚了反正是不靠譜的态蒂,所以建議大家用[[UIDevice currentDevice] systemVersion]這個方法!
    Swift判斷如下:
    if #available(iOS 10.0, *) {
    print(“iOS 10.0”); // iOS 10.0啊
    } else{ };
    https的問題
    iOS 9中默認非HTTS的網(wǎng)絡是被禁止的,當然我們也可以把NSAllowsArbitraryLoads設置為YES禁用ATS费什。不過iOS 10從2017年1月1日起蘋果不允許我們通過這個方法跳過ATS钾恢,也就是說強制我們用HTTPS,如果不這樣的話提交App可能會被拒絕吕喘。但是我們可以通過NSExceptionDomains來針對特定的域名開放HTTP可以容易通過審核赘那。
    隱私權(quán)限
    iOS 10 開始對隱私權(quán)限更加嚴格,如果你不設置就會直接崩潰氯质,現(xiàn)在很多遇到崩潰問題了募舟,一般解決辦法都是在info.plist文件添加對應的Key-Value就可以了。
這里寫圖片描述

NSPhotoLibraryUsageDescription
App需要您的同意,才能訪問相冊
NSCameraUsageDescription
App需要您的同意,才能訪問相機
NSMicrophoneUsageDescription
App需要您的同意,才能訪問麥克風
NSLocationUsageDescription
App需要您的同意,才能訪問位置
NSLocationWhenInUseUsageDescription
App需要您的同意,才能在使用期間訪問位置
NSLocationAlwaysUsageDescription
App需要您的同意,才能始終訪問位置
NSCalendarsUsageDescription
App需要您的同意,才能訪問日歷
NSRemindersUsageDescription
App需要您的同意,才能訪問提醒事項
NSMotionUsageDescription App需要您的同意,才能訪問運動與健身
NSHealthUpdateUsageDescription
App需要您的同意,才能訪問健康更新
NSHealthShareUsageDescription
App需要您的同意,才能訪問健康分享
NSBluetoothPeripheralUsageDescription
App需要您的同意,才能訪問藍牙
NSAppleMusicUsageDescription
App需要您的同意,才能訪問媒體資料庫
權(quán)限以及相關(guān)設置
iOS10調(diào)用相冊會Crash下面信息:
This app has crashed because it attempted to access privacy-sensitive data without a usage description.
The app’s Info.plist must contain an NSPhotoLibraryUsageDescription key with a string value explaining to the user how the app uses this data.
大體意思就是這個App缺少一個獲取私有(敏感)數(shù)據(jù)的權(quán)限描述闻察,需要我們在info.plist文件中必須含有一個名字叫做NSPhotoLibraryUsageDescription的值來解釋為什么應用需要使用這個數(shù)據(jù)拱礁,沒錯,獲取相冊資源的鍵值就是NSPhotoLibraryUsageDescription
去plist文件中添加了下面的鍵值:

[圖片上傳中辕漂。呢灶。。(5)]

再點擊獲取圖片資源钉嘹,就彈出了一個獲取權(quán)限的問候鸯乃,不會發(fā)生崩潰了:

[圖片上傳中。跋涣。缨睡。(6)]

Privacy - Microphone Usage Description //麥克風權(quán)限
Privacy - Contacts Usage Description //通訊錄權(quán)限
Privacy - Camera Usage Description //攝像頭權(quán)限
Privacy - NSSiriUsageDescription //Siri的權(quán)限
Privacy - Bluetooth Peripheral Usage Description //藍牙
Privacy - Reminders Usage Description //提醒事項
Privacy - Motion Usage Description //運動與健康
Privacy - Media Libaray Usage Description //媒體資源庫
Privacy - Calendars Usage Description //日歷
xib設定好固定尺寸在代碼中獲取控件尺寸都變成(0,0,1000,1000)
UIView中要從- (void)updateConstraints或者- (void)drawRect:(CGRect)rect獲取控件尺寸鸟悴。
(void)updateConstraints
{
[super updateConstraints];
}
(void)drawRect:(CGRect)rect
{
[super drawRect:rect];
}
UIViewController中要從- (void)viewDidLayoutSubviews獲取控件尺寸。
(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
}
Xcode 8使用Xib awakeFromNib的警告問題
在Xcode 8之前我們使用Xib初始化- (void)awakeFromNib {}都是這么寫也沒什么問題奖年,但是在Xcode 8會有如下警告:

[圖片上傳中细诸。。陋守。(7)]

如果不喜歡這個警告的話震贵,應該明確的加上[super awakeFromNib];我們來看看官方說明:
隱藏狀態(tài)欄的功能壞掉:
升級到 iOS 10.0后,在查看全屏圖片的時候水评,需要在 Present 之前給要 present 的 view controller 設置 modalPresentationCapturesStatusBarAppearance = true猩系。然后就好啦
TestViewController *testVC = [[TestViewController alloc] init];
testVC.modalPresentationCapturesStatusBarAppearance = true;
[self presentViewController:testVC animated:YES completion:nil];
//iOS 10 狀態(tài)欄的設置

  • (UIStatusBarStyle)preferredStatusBarStyle {
    return UIStatusBarStyleDefault;
    }
    ************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)容的預期的語義意義。例如褪那,您可以指定一個文本字段幽纷,用戶填寫收到一封電子郵件確認 uitextcontenttypeemailaddress。當您提供有關(guān)您期望用戶在文本輸入?yún)^(qū)域中輸入的內(nèi)容的信息時博敬,系統(tǒng)可以在某些情況下自動選 擇適當?shù)逆I盤友浸,并提高鍵盤修正和主動與其他文本輸入機會的整合。
    UIScrollView自帶刷新功能
    iOS 10 以后只要是繼承UIScrollView那么就支持刷新功能:
    @property (nonatomic, strong, nullable) UIRefreshControl *refreshControl NS_AVAILABLE_IOS(10_0) __TVOS_PROHIBITED;
    ImagePickerController.cameraViewTransform問題
    (本條更新于:2016-09-21) 很多人反映自定義相機出現(xiàn)了問題偏窝,cameraViewTransform不能用了收恢,其實網(wǎng)上關(guān)于這個的資料不是很多,在這里提供參考辦法如下:
    通過監(jiān)聽AVCaptureSessionDidStartRunningNotification來解決
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祭往,一起剝皮案震驚了整個濱河市伦意,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌硼补,老刑警劉巖驮肉,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異已骇,居然都是意外死亡离钝,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門褪储,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵渴,“玉大人,你說我怎么就攤上這事鲤竹±硕粒” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碘橘。 經(jīng)常有香客問我论泛,道長,這世上最難降的妖魔是什么蛹屿? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮岩榆,結(jié)果婚禮上错负,老公的妹妹穿的比我還像新娘。我一直安慰自己勇边,他們只是感情好犹撒,可當我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粒褒,像睡著了一般识颊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上奕坟,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天祥款,我揣著相機與錄音,去河邊找鬼月杉。 笑死刃跛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的苛萎。 我是一名探鬼主播桨昙,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腌歉!你這毒婦竟也來了蛙酪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤翘盖,失蹤者是張志新(化名)和其女友劉穎桂塞,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馍驯,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡藐俺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泥彤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欲芹。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖吟吝,靈堂內(nèi)的尸體忽然破棺而出菱父,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布浙宜,位于F島的核電站官辽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏粟瞬。R本人自食惡果不足惜同仆,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裙品。 院中可真熱鬧俗批,春花似錦、人聲如沸市怎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽区匠。三九已至干像,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驰弄,已是汗流浹背麻汰。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戚篙,地道東北人什乙。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像已球,于是被迫代替她去往敵國和親臣镣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,779評論 2 354

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

  • 因為要結(jié)局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,414評論 0 12
  • 一智亮、遇到的問題1忆某、權(quán)限以及相關(guān)設置iOS10系統(tǒng)下調(diào)用系統(tǒng)相冊、相機功能阔蛉,或者蘋果健康都會遇到閃退的情況弃舒,調(diào)用系統(tǒng)...
    零度_不結(jié)冰閱讀 1,770評論 0 0
  • 一、證書管理用Xcode8打開工程后状原,比較明顯的就是下圖了聋呢,這個是蘋果的新特性,可以幫助我們自動管理證書颠区。建議大家...
    seventhboy閱讀 1,515評論 0 2
  • Xcode8 適配iOS10時遇見的一些問題1削锰、證書管理用Xcode8打開工程后,比較明顯的就是下圖了毕莱,這個是蘋果...
    零度_不結(jié)冰閱讀 370評論 0 1
  • 今天上班器贩,誰知怎么搞的測試機點錯颅夺,直接升級到iOS10系統(tǒng)了。哎蛹稍,當開始運行項目時的各種問題吧黄。分享給大家看看。 一...
    MissLu16閱讀 1,707評論 3 3