• <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)下載排行

        主站蜘蛛池模板: 久热中文字幕在线精品免费| 亚洲日本中文字幕天天更新| 国产无遮挡色视频免费观看性色| 韩国18福利视频免费观看| 亚洲日韩国产一区二区三区在线 | 午夜亚洲国产精品福利| 免费无码一区二区三区蜜桃大| 亚洲欧美成人av在线观看| 色播在线永久免费视频| 国产精品日本亚洲777| 亚洲天堂中文字幕在线| 中国精品一级毛片免费播放| 亚洲av无码专区国产乱码在线观看 | 抽搐一进一出gif免费视频| 在线A亚洲老鸭窝天堂| 日韩精品无码一区二区三区免费| 亚洲成a人片7777| 免费看少妇作爱视频| 一区二区3区免费视频| 久久精品夜色国产亚洲av| 久热中文字幕在线精品免费| 亚洲精品乱码久久久久久蜜桃图片| 波多野结衣一区二区免费视频| 成av免费大片黄在线观看| 亚洲欧洲春色校园另类小说| 日本无吗免费一二区| 日本高清不卡aⅴ免费网站| 亚洲国产中文在线视频| 免费国产综合视频在线看| 免费视频成人手机在线观看网址| 亚洲免费一级视频| 亚洲欧洲中文日韩久久AV乱码 | 十八禁视频在线观看免费无码无遮挡骂过 | 中国videos性高清免费| 亚洲人妖女同在线播放| 久久精品国产亚洲精品| 亚洲大片免费观看| a级毛片免费网站| 亚洲午夜电影在线观看| 亚洲偷自拍拍综合网| 毛片在线免费视频|