亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

ios 11和iphone x的相關適配問題及解決方法

2019-10-21 18:43:49
字體:
來源:轉載
供稿:網友

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

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

//解決iOS11 tableview會出現漂移,預估高度都設為0  self.tableView.estimatedRowHeight = 0;  self.tableView.estimatedSectionHeaderHeight = 0;  self.tableView.estimatedSectionFooterHeight = 0; 

解決scrollView,默認位移了,解決辦法:

-(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 } 

關于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) {//設備屏幕類型  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 

總結

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美日韩精品丝袜高跟鞋| 国语自产精品视频在线看抢先版图片| 久久久亚洲精选| 欧美自拍大量在线观看| 国产999精品久久久| 欧美俄罗斯性视频| 久久久亚洲国产天美传媒修理工| 久久久久久久久久久久久久久久久久av| 欧美激情极品视频| 中文字幕日韩欧美| 九九综合九九综合| 日韩精品免费在线播放| 日韩电影在线观看免费| 午夜精品久久久久久99热| 国产一区二区成人| 欧亚精品在线观看| 亚洲www永久成人夜色| 超薄丝袜一区二区| 亚洲精品视频免费| 久久久久这里只有精品| 精品美女久久久久久免费| 青青a在线精品免费观看| 亚洲精品久久久久久久久久久久| 国产精品国产亚洲伊人久久| 国产中文欧美精品| 国产精品爱啪在线线免费观看| 久久精品久久精品亚洲人| www.国产精品一二区| 亚洲深夜福利在线| 久久成人一区二区| 成人在线国产精品| 欧美孕妇与黑人孕交| 一区二区三区在线播放欧美| 成人性生交大片免费观看嘿嘿视频| 性欧美激情精品| 国产大片精品免费永久看nba| 久久天天躁狠狠躁夜夜躁2014| 欧美在线www| 久久九九亚洲综合| 成人欧美一区二区三区黑人孕妇| 性色av一区二区三区免费| 欧美中文字幕在线| 国产精品扒开腿爽爽爽视频| xxx一区二区| 精品国产欧美一区二区五十路| 岛国av在线不卡| 欧美日韩不卡合集视频| 成人在线视频福利| 国产精品久久久久高潮| 久久噜噜噜精品国产亚洲综合| 色爱av美腿丝袜综合粉嫩av| 黄网动漫久久久| 久久久精品日本| 日韩中文字幕免费看| 亚洲成人精品在线| 久久影院资源网| 欧美在线视频播放| 在线观看日韩www视频免费| 欧美一级大胆视频| 久久99久久99精品免观看粉嫩| 亚洲精品网站在线播放gif| 韩曰欧美视频免费观看| 欧美激情亚洲另类| 欧美极品美女视频网站在线观看免费| 欧美另类交人妖| 在线视频国产日韩| 国产精品私拍pans大尺度在线| 神马国产精品影院av| 日韩av网址在线| 欧美日韩国产页| 成人精品一区二区三区电影免费| 夜夜嗨av色一区二区不卡| 亚洲国产高清福利视频| 欧美日韩亚洲一区二区三区| 日韩亚洲第一页| 亚洲欧美中文日韩在线| 久久久伊人欧美| 国产精品r级在线| 日韩成人在线视频观看| 成人免费观看49www在线观看| 成人h视频在线| 国产成人精品在线观看| 青青草国产精品一区二区| 亚洲激情免费观看| 久久久久久亚洲| 18久久久久久| 日韩av免费在线看| 97在线视频精品| xvideos国产精品| 国内精品久久久久久久| 欧美日韩国产一区二区| 日韩中文字幕欧美| 欧美激情精品久久久久久大尺度| 国产精品免费视频久久久| 国外成人免费在线播放| 欧美日韩在线观看视频小说| 国产成人一区二区在线| 尤物九九久久国产精品的分类| 久久影视电视剧免费网站清宫辞电视| 久久亚洲国产精品成人av秋霞| 亚洲精品久久久一区二区三区| 精品久久久一区二区| 欧美视频中文字幕在线| 欧美限制级电影在线观看| 亚洲国产精品中文| 亚洲理论电影网| 国产精欧美一区二区三区| 久热爱精品视频线路一| 久久久91精品国产一区不卡| 最新中文字幕亚洲| 国产精品人成电影在线观看| 尤物tv国产一区| 欧美性猛交xxxx富婆| 亚洲综合中文字幕在线观看| 日韩av影视在线| 久久精品小视频| 91免费视频国产| 欧美激情xxxx| 97视频在线观看播放| 日韩欧美黄色动漫| 亚洲精品成a人在线观看| 国产精品高潮呻吟久久av野狼| 91成人免费观看网站| 最近免费中文字幕视频2019| 国产成人自拍视频在线观看| 亚洲国产精品999| 日韩亚洲在线观看| 国产欧美日韩专区发布| 国产成人精品综合| 亚洲欧美成人一区二区在线电影| 91国语精品自产拍在线观看性色| 亚洲国产高清高潮精品美女| 久久天堂电影网| 精品香蕉一区二区三区| 欧美成人sm免费视频| 精品国产一区二区三区久久久| 欧美一级在线播放| 欧美日韩一区二区在线播放| 色偷偷av一区二区三区乱| 91在线精品视频| 国产精品h片在线播放| 欧美国产一区二区三区| 亚洲国产一区自拍| 欧美猛少妇色xxxxx| 日韩欧美黄色动漫| 久久久久一本一区二区青青蜜月| 久久九九有精品国产23| 日本成人免费在线| 欧美性猛交xxx| 国产视频在线观看一区二区| 欧美极品少妇全裸体| 欧美色xxxx| 黑人精品xxx一区| 亚洲国产美女精品久久久久∴| 曰本色欧美视频在线| 最近2019年日本中文免费字幕| 国精产品一区一区三区有限在线| 欧美日韩国产激情| 日韩在线观看免费高清| 久久亚洲精品一区二区| 国产成人在线一区二区| 中文字幕精品久久| 亚洲欧洲在线播放| 欧美一级大片在线观看|