• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當(dāng)前位置:雨林木風(fēng)下載站 > 蘋果教程教程 > 詳細(xì)頁面

        ios 11與iphone x的相關(guān)適配問題及處理辦法_IOS

        ios 11與iphone x的相關(guān)適配問題及處理辦法_IOS

        更新時間:2024-04-11 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

        導(dǎo)有關(guān)iOS11 ,最大的變化就是增加了一個安全區(qū)域(safeArea)的概念,iOS11 適配的大部分問題都是由于它引起的。在ios 11中,tableView會莫名偏移,解決辦法://解決iOS1...

        有關(guān)iOS11 ,最大的變化就是增加了一個安全區(qū)域(safeArea)的概念,iOS11 適配的大部分問題都是由于它引起的。

        在ios 11中,tableView會莫名偏移,解決辦法:

        //解決iOS11 tableview會出現(xiàn)漂移,預(yù)估高度都設(shè)為0 
         self.tableView.estimatedRowHeight = 0; 
         self.tableView.estimatedSectionHeaderHeight = 0; 
         self.tableView.estimatedSectionFooterHeight = 0; 

        解決scrollView,默認(rèn)位移了,解決辦法:

        -(void)setScrollViewContentInsetAdjustmentBehavior:(UIScrollView *)scrollView { 
        #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 
         if(@available(iOS 11.0, *)) { 
          if ([scrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { 
           scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; 
          } 
         } 
        #endif 
        } 

        關(guān)于iphone x適配,封裝了一個類:代碼如下:

        ScreenTool.h

        #import <Foundation/Foundation.h> 
        #import <UIKit/UIKit.h> 
        #define ViewSafeAreaInsets(view) [ScreenToolSharedInstance getViewSafeAreaInsets:view] 
        #define WindowSafeAreaInsets [ScreenToolSharedInstance getWindowSafeAreaInsets] 
        #define Screen_height [[UIScreen mainScreen] bounds].size.height 
        #define Screen_width [[UIScreen mainScreen] bounds].size.width 
        #define ScreenToolSharedInstance [ScreenTool sharedInstance] 
        #define NavAndStatusBarHeight [ScreenToolSharedInstance getNavAndStatusBarHeight] 
        #define TabBarAndVirtualHomeHeight [ScreenToolSharedInstance getTabBarAndVirtualHomeHeight] 
        #define StatusBarHeight [ScreenToolSharedInstance getStatusBarHeight] 
        #define NavContentHeight [ScreenToolSharedInstance getNavContentHeight] 
        #define TabBarContentHeight [ScreenToolSharedInstance getTabBarContentHeight] 
        #define ScrollViewContentInsetAdjustmentBehavior(scrollView) [ScreenToolSharedInstance setScrollViewContentInsetAdjustmentBehavior:scrollView] 
        typedef NS_ENUM(NSUInteger, DeviceScreenType) {//設(shè)備屏幕類型 
         DeviceTypeIphone4Screen, 
         DeviceTypeIphone5Screen, 
         DeviceTypeIphone6Screen, 
         DeviceTypeIphone6PlusScreen, 
         DeviceTypeIphoneXScreen, 
         DeviceTypeOtherScreen 
        }; 
        typedef NS_ENUM(NSUInteger, DeviceOrientationType) {//屏幕方向類型 
         DeviceOrientationTypeHorizontalScreen, 
         DeviceOrientationTypeVerticalScreen, 
         DeviceOrientationTypeOther 
        }; 
        @interface ScreenTool : NSObject 
        @property(nonatomic,unsafe_unretained)BOOL isAccordingToSafeArea; 
        -(void)setScrollViewContentInsetAdjustmentBehavior:(UIScrollView *)scrollView; 
        +(ScreenTool *)sharedInstance; 
        +(BOOL)isSmallScreen; 
        -(UIEdgeInsets)getWindowSafeAreaInsets; 
        -(UIEdgeInsets)getViewSafeAreaInsets:(UIView *)view; 
        -(NSString *)getDevice; 
        -(DeviceScreenType)getDeviceType; 
        -(DeviceOrientationType)getDeviceOrientationType; 
        -(CGFloat)getNavAndStatusBarHeight; 
        -(CGFloat)getTabBarAndVirtualHomeHeight; 
        -(CGFloat)getTabBarContentHeight; 
        -(CGFloat)getNavContentHeight; 
        -(CGFloat)getStatusBarHeight; 
        @end 
        ScreenTool.m
        [objc] view plain copy
        #import "ScreenTool.h" 
        @implementation ScreenTool 
        -(instancetype)init{ 
         if (self = [super init]) { 
          self.isAccordingToSafeArea = YES; 
         } 
         return self; 
        } 
        +(ScreenTool *)sharedInstance { 
         static dispatch_once_t pred = 0; 
         __strong static id screenTool = nil; 
         dispatch_once(&pred, ^{ 
          screenTool = [[self alloc] init]; 
         }); 
         return screenTool; 
        } 
        -(void)setScrollViewContentInsetAdjustmentBehavior:(UIScrollView *)scrollView { 
        #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 
         if(@available(iOS 11.0, *)) { 
          if ([scrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { 
           scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; 
          } 
         } 
        #endif 
        } 
        -(UIEdgeInsets)getWindowSafeAreaInsets { 
         UIEdgeInsets i = UIEdgeInsetsZero; 
        #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 
         if(@available(iOS 11.0, *)) { 
          i = [UIApplication sharedApplication].keyWindow.safeAreaInsets; 
         } 
        #endif 
         return i; 
        } 
        -(UIEdgeInsets)getViewSafeAreaInsets:(UIView *)view { 
         UIEdgeInsets i = UIEdgeInsetsZero; 
        #if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000 
         if(@available(iOS 11.0, *)) { 
          i = view.safeAreaInsets; 
         } 
        #endif 
         return i; 
        } 
        -(NSString *)getDevice { 
         if ((Screen_width == 320 && Screen_height == 480) || (Screen_height == 320 && Screen_width == 480)) { 
          return @"4"; 
         }else if ((Screen_width == 320 && Screen_height == 568) || (Screen_height == 320 && Screen_width == 568)) { 
          return @"5"; 
         }else if ((Screen_width == 375 && Screen_height == 667) || (Screen_height == 375 && Screen_width == 667)) { 
          return @"6"; 
         }else if ((Screen_width == 375 && Screen_height == 812) || (Screen_height == 375 && Screen_width == 812)) { 
          return @"x"; 
         }else if ((Screen_width == 414 && Screen_height == 736) || (Screen_height == 414 && Screen_width == 736)) { 
          return @"6p"; 
         }else { 
          return @""; 
         } 
        } 
        -(DeviceScreenType)getDeviceType { 
         if ((Screen_width == 320 && Screen_height == 480) || (Screen_height == 320 && Screen_width == 480)) { 
          return DeviceTypeIphone4Screen; 
         }else if ((Screen_width == 320 && Screen_height == 568) || (Screen_height == 320 && Screen_width == 568)) { 
          return DeviceTypeIphone5Screen; 
         }else if ((Screen_width == 375 && Screen_height == 667) || (Screen_height == 375 && Screen_width == 667)) { 
          return DeviceTypeIphone6Screen; 
         }else if ((Screen_width == 375 && Screen_height == 812) || (Screen_height == 375 && Screen_width == 812)) { 
          return DeviceTypeIphoneXScreen; 
         }else if ((Screen_width == 414 && Screen_height == 736) || (Screen_height == 414 && Screen_width == 736)) { 
          return DeviceTypeIphone6PlusScreen; 
         }else { 
          return DeviceTypeOtherScreen; 
         } 
        } 
        -(DeviceOrientationType)getDeviceOrientationType { 
         if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait || [[UIDevice currentDevice] orientation] == UIDeviceOrientationPortraitUpsideDown) { 
          return DeviceOrientationTypeVerticalScreen; 
         } else if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft || [[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight) { 
          return DeviceOrientationTypeHorizontalScreen; 
         }else { 
          return DeviceOrientationTypeOther; 
         } 
        } 
        +(BOOL)isSmallScreen{ 
         if (Screen_width >=375 && Screen_height >= 667) { 
          return NO; 
         }else { 
          return YES; 
         } 
        } 
        -(CGFloat)getTabBarContentHeight { 
         if (!UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, WindowSafeAreaInsets)) { 
          //if ([self getDeviceType] == DeviceTypeIphoneXScreen) { 
          if ([self getDeviceOrientationType] == DeviceOrientationTypeHorizontalScreen) { 
           if (self.isAccordingToSafeArea) { 
            return 32; 
           }else { 
            return 49; 
           } 
          }else { 
           return 49; 
          } 
         }else { 
          return 49; 
         } 
        } 
        -(CGFloat)getNavContentHeight { 
         if (!UIEdgeInsetsEqualToEdgeInsets(UIEdgeInsetsZero, WindowSafeAreaInsets)) { 
          // } 
          // if ([self getDeviceType] == DeviceTypeIphoneXScreen) { 
          if ([self getDeviceOrientationType] == DeviceOrientationTypeHorizontalScreen) { 
           if (self.isAccordingToSafeArea) { 
            return 32; 
           }else { 
            return 44; 
           } 
          }else { 
           return 44; 
          } 
         }else { 
          return 44; 
         } 
        } 
        -(CGFloat)getStatusBarHeight { 
         return [[UIApplication sharedApplication] statusBarFrame].size.height; 
        } 
        -(CGFloat)getNavAndStatusBarHeight { 
         return [self getNavContentHeight]+[self getStatusBarHeight]; 
        } 
        -(CGFloat)getTabBarAndVirtualHomeHeight { 
         return [self getTabBarContentHeight]+WindowSafeAreaInsets.bottom; 
        } 
        @end 

        總結(jié)

        以上所述是小編給大家介紹的ios 11和iphone x的相關(guān)適配問題及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對本站網(wǎng)站的支持!

        您可能感興趣的文章:
        • iOS11和iPhoneX適配的一些坑
        • 詳解iOS11、iPhone X、Xcode9 適配指南
        • iPhone X官方文檔的適配學(xué)習(xí)詳解
        • iPhoneX無導(dǎo)航欄頁面適配問題解決方案
        • 淺談iphone X的簡單適配問題(推薦)
        • 微信小程序中吸底按鈕適配iPhone X方案
        • 關(guān)于適配iOS11和iPhoneX的一些事
        • iOS11&iPhoneX適配&Xcode9打包注意事項
        • iOS 11更新后及iPhone X推出后工程中遇到的問題及適配方法
        • iPhoneX 各種適配記錄筆記(超全面)


        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統(tǒng)下載排行

        主站蜘蛛池模板: 国产午夜亚洲精品不卡电影| 拍拍拍无挡免费视频网站| 国产视频精品免费| 国产精品免费久久| 亚洲精品在线电影| 又粗又大又长又爽免费视频| 久久国产精品免费观看| 亚洲日韩精品A∨片无码加勒比| 亚洲乱亚洲乱少妇无码| 成年人免费的视频| 九九久久精品国产免费看小说 | 性色av免费观看| 在线观看免费黄色网址| 亚洲色无码国产精品网站可下载| 亚洲中文字幕在线第六区| 在线观看日本免费a∨视频| 精品久久久久久国产免费了 | 亚洲一区二区三区首页| 永久免费观看的毛片的网站| 日韩精品人妻系列无码专区免费| 欧美激情综合亚洲一二区| 亚洲综合精品香蕉久久网97| 亚洲欧洲日产国码一级毛片| 久草在视频免费福利| 久久久久久久久久免免费精品 | 亚洲精品国产国语| 亚洲第一视频网站| 红杏亚洲影院一区二区三区| 成人免费视频观看无遮挡| 99re6热视频精品免费观看| 一日本道a高清免费播放| 亚洲欧美日韩中文高清www777| 亚洲av无码专区在线播放| 亚洲国产精品嫩草影院久久| 成年女人免费碰碰视频| 97青青草原国产免费观看| 中文在线观看免费网站| 免费在线人人电影网| 亚洲精品蜜夜内射| 亚洲中文字幕无码av永久| 亚洲国产成人久久三区|