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

        主站蜘蛛池模板: 国产午夜亚洲精品不卡免下载| 亚洲精品国精品久久99热一| 亚洲一区二区三区在线观看蜜桃| 国产免费拔擦拔擦8X高清在线人| 国产精品亚洲mnbav网站| 一级毛片免费播放试看60分钟| 亚洲人成色77777在线观看| 在线v片免费观看视频| 亚洲www77777| 青柠影视在线观看免费高清 | 久久亚洲最大成人网4438| 亚洲一区二区免费视频| 亚洲国产高清美女在线观看| 狼群影院在线观看免费观看直播| 国产成人免费高清激情明星| 亚洲一级毛片在线观| 午夜成年女人毛片免费观看| 国产成人高清亚洲一区91| 啊v在线免费观看| 久久久精品视频免费观看| 亚洲日本中文字幕| 成人免费AA片在线观看| 亚洲精品色在线网站| 亚洲国产美女精品久久久久∴| 99re这里有免费视频精品| 99亚偷拍自图区亚洲| 亚洲第一区在线观看| 99爱视频99爱在线观看免费| 四虎必出精品亚洲高清| 亚洲精品一级无码鲁丝片| 午夜无码A级毛片免费视频| 亚洲欧美熟妇综合久久久久| 中文字幕中韩乱码亚洲大片| 91精品全国免费观看含羞草| 亚洲AV成人影视在线观看| 久久久久国产亚洲AV麻豆| 99久久免费国产香蕉麻豆| 亚欧乱色国产精品免费视频| 亚洲美女中文字幕| 亚洲国产专区一区| 99在线精品视频观看免费|