iOS11適配問題列表

1、導航欄的高度的適配

iOS 11以前,狀態(tài)欄statusBar的高度是20,底部tabbar的高度是49。
iOS 11之后,狀態(tài)欄的statusBar的高度變成了44, 底部的tabbar變成了83
所以建議還是抽取成宏。

2、安全區(qū)域的問題

iOS 11之前, automaticallyadjustsscrollviewinsets經(jīng)常被設(shè)置成NO,由開發(fā)者去控制處理留白和坐標問題。
iOS 11后,把這個automaticallyadjustsscrollviewinsets廢棄,新增了
contentInsetAdjustmentBehavior,它是個枚舉類型的值,我們只需要把其設(shè)置成never就行了.

#define  adjustsScrollViewInsets_NO(scrollView,vc)\
do { \
    _Pragma("clang diagnostic push") \
    _Pragma("clang diagnostic ignored \"-Warc-performSelector-leaks\"") \
        if ([UIScrollView instancesRespondToSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:")]) {\
            [scrollView   performSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:") withObject:@(2)];\
        } else {\
            vc.automaticallyAdjustsScrollViewInsets = NO;\
        }\
    _Pragma("clang diagnostic pop") \
} while (0)

3、tableview的組頭和組尾高度變大問題

我們需要在初始化的把這三屬性設(shè)置成0即可(

estimatedRowHeight、 estimatedSectionHeaderHeight estimatedSectionFooterHeight)

4、導航欄標題titleview的問題

iOS 11中會出現(xiàn)蜷縮成一起的現(xiàn)象 不過它現(xiàn)在支持autolayout。所以我們需要把它擴展出去, 只需要在你自定義的titleview中實現(xiàn)

- (CGSize)intrinsicContentSize {

     return  UILayoutFittingExpandedSize;

 }

5、狀態(tài)欄獲取當前網(wǎng)絡(luò)狀態(tài)(3G、4G、Wifi、LTE...)

#pragma mark-獲取當前網(wǎng)絡(luò)狀態(tài)
+(NSString *)getCurrentNetworkStatus{
    
    NSString * networktype = nil;
    // 因此可見iPhone X的狀態(tài)欄是多嵌套了一層,多取一次即可,最終適配代碼為:
    NSArray *subviews;
    // 不能用 [[self deviceVersion] isEqualToString:@"iPhone X"] 來判斷,因為模擬器不會返回 iPhone X
    if ([[[UIApplication sharedApplication] valueForKeyPath:@"_statusBar"] isKindOfClass:NSClassFromString(@"UIStatusBar_Modern")]) {
        subviews = [[[[[UIApplication sharedApplication] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    } else {
            subviews = [[[[UIApplication sharedApplication] valueForKeyPath:@"_statusBar"] valueForKeyPath:@"foregroundView"] subviews];
    }
    
//    NSArray *subviews = [[[[UIApplication sharedApplication] valueForKey:@"statusBar"] valueForKey:@"foregroundView"]subviews];
    
    NSNumber *dataNetworkItemView = nil;
    
    for (id subview in subviews) {
        if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView") class]]) {
            dataNetworkItemView = subview;
            break;
        }
    }
    switch ([[dataNetworkItemView valueForKey:@"dataNetworkType"]integerValue]) {
        case 0:
            networktype = @"";
            break;
        case 1:
            networktype=@"2G";
            break;
        case 2:
            networktype=@"3G";
            break;
        case 3:
            networktype=@"4G";
            break;
        case 4:
            networktype=@"LTE";
            break;
        case 5:
            networktype=@"Wifi";
            break;
            
        default:
            networktype = @"";
            break;
    }
    
    return networktype;
}

6、啟動圖

Default-iOS11-812h.jpg

7、設(shè)備內(nèi)編碼轉(zhuǎn)換設(shè)備名

@"iPhone10,1" : @"iPhone 8",
@"iPhone10,4" : @"iPhone 8",
@"iPhone10,2" : @"iPhone 8 Plus",
@"iPhone10,5" : @"iPhone 8 Plus",
@"iPhone10,3" : @"iPhone X",
@"iPhone10,6" : @"iPhone X",
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容