你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> Xcode8下iOS10常見報錯閃退,字體適配和編譯不過的問題及解決方案

Xcode8下iOS10常見報錯閃退,字體適配和編譯不過的問題及解決方案

編輯:IOS開發綜合

9月14日凌晨1點,蘋果推送了iOS10,於是一上班就迅速升級了iOS10,然後坑就這樣開始了。。。

問題1

首先是xcode的問題,發現xcode升級到8才能真機運行,於是先了解了下iOS10的適配。

有這個iOS10適配總結,還有這個iOS10適配問題收集整理,還有這個iOS10適配,還有很多其他的。

這個好辦,取消nullabl關鍵字就好。

然後另一個蛋疼的問題來了

問題二,編譯不過的問題

蛋疼的clang報錯le..

這個是詳細的信息,一堆莫名其妙的東西出來了。

隱隱約約感覺是WGS84T0GCJ02.o這個實現文件的問題,然後進行刪除,在run,居然成功了。

所以原因暫定為對一些c函數的支持不好。

如果發現項目奔潰的,該去檢查老舊模塊的一些老文件。沒有什麼好的解決辦法,去排查警告下的那些類吧。

問題三,適配問題(如何解決)

用iOS10的同學都看到了適配的問題,因為iOS10更換了系統字體,之前有看到文章說在原來的基礎上加5個像素的寬度,其實這個是不夠准確詳細的,在Xcode8的xib下測了一下不同長度需要的寬度。以下以15號字體為例:

Xcode8下完全展示15號字體所需的frame最小寬度

字數超過20後,加5也不能滿足了。

寫了個方法,調用NSStringDrawing框架下獲取文字寬帶的方法,結果發現

- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"testLab width = %f",_testLab.frame.size.width);
[self getStringWidth:@"一一一一一一一一一一" front:[UIFont systemFontOfSize:10]];
}
- (void)getStringWidth:(NSString *)str front:(UIFont *)strFront
{
NSDictionary *attributes =[NSDictionary dictionaryWithObjectsAndKeys:strFront, NSFontAttributeName, nil];
CGSize stringSize = [str sizeWithAttributes:attributes];// 規定字符字體獲取字符串Size,再獲取其寬度。
CGFloat width = stringSize.width;
NSLog(@" width= %f",width);
}

xcode7下是這樣的(托一個小伙伴運行了下)


但是xcode8下是這樣的

sizeWithAttributes這個方法不會撒謊,所以調這個方法的基本都沒問題。

但是如果簡單的根據字體個數來算lable的寬度,font * 字數,那就可以根據字數適當加幾個坐標。

以上所述是小編給大家介紹的Xcode8下iOS10常見報錯閃退,字體適配和編譯不過的問題及解決方案,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對本站網站的支持!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved