国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

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

2020-02-19 15:46:25
字體:
來源:轉載
供稿:網友

新出版的iphone x被大家吐槽了,相信大家對iPhoneX的印象很深刻,今天就讓武林技術頻道小編為大家帶來ios 11和iphone x的相關適配問題及解決方法吧!

在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的相關適配問題及解決方法,更多是專業知識盡在武林技術頻道!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泾源县| 武胜县| 镇远县| 理塘县| 沈阳市| 呼图壁县| 沙河市| 永寿县| 嘉荫县| 保德县| 南丰县| 永城市| 郴州市| 黎川县| 固安县| 赣州市| 阿拉尔市| 云霄县| 秭归县| 库车县| 乌兰浩特市| 中山市| 哈巴河县| 和龙市| 新闻| 靖西县| 新余市| 郁南县| 奉贤区| 仪征市| 沭阳县| 亚东县| 年辖:市辖区| 西畴县| 章丘市| 甘谷县| 榆林市| 敦煌市| 邵东县| 平凉市| 宁远县|