虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > iOS 适配iPhone X的方法

iOS 适配iPhone X的方法
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

下面小编就为大家分享一篇iOS 适配iPhone X的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

因为iPhone X奇特的刘海存在,iOS11之后系统深化了“安全区域”概念,安全区域就是从屏幕上切除最大的矩形之外的区域。

iOS11后UIScrollView新增contentInsetAdjustmentBehavior属性,默认配置UIScrollViewContentInsetAdjustmentAutomatic,效果上就是没使用安全区域。若针对具体页面需要使用安全区域,可以查看API中新增加的那些属性。

    /** * 适配iPhone X的安全区域 * isUse = 1 表示使用安全区域 * isUse = 0 表示不使用安全区域 */ + (void)adaptationSafeAreaWith:(UIScrollView *)sv useArea:(NSInteger)isUse {
    if ([[sv class] isSubclassOfClass:[UIWebView class]]) {
    UIWebView *webView = (UIWebView *)sv;
    for (UIView *aView in [webView subviews]) {
    if ([aView isKindOfClass:[UIScrollView class]]) {
    sv = (UIScrollView *)aView;
    break;
    }
    }
    }
    #ifdef __IPHONE_11_0 if ([sv respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) {
    if (isUse) {
    if (@available(iOS 11.0, *)) {
    sv.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    if ([[sv class] isSubclassOfClass:[UITableView class]]) {
    UITableView *tv = (UITableView *)sv;
    [tv setInsetsContentViewsToSafeArea:NO];
    }
    }
    else {
    // Fallback on earlier versions }
    }
    else {
    if (@available(iOS 11.0, *)) {
    sv.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAlways;
    }
    else {
    // Fallback on earlier versions }
    }
    }
    #endif }
    typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
    UIScrollViewContentInsetAdjustmentAutomatic, // Similar to .scrollableAxes, but for backward compatibility will also adjust the top & bottom contentInset when the scroll view is owned by a view controller with automaticallyAdjustsScrollViewInsets = YES inside a navigation controller, regardless of whether the scroll view is scrollable UIScrollViewContentInsetAdjustmentScrollableAxes, // Edges for scrollable axes are adjusted (i.e., contentSize.width/height > frame.size.width/height or alwaysBounceHorizontal/Vertical = YES) UIScrollViewContentInsetAdjustmentNever, // contentInset is not adjusted UIScrollViewContentInsetAdjustmentAlways, // contentInset is always adjusted by the scroll view's safeAreaInsets }
    API_AVAILABLE(ios(11.0),tvos(11.0));

以上这篇iOS 适配iPhone X的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • 浅谈iphone X的简单适配问题(推荐)
  • iPhone X官方文档的适配学习详解
  • iOS11和iPhoneX适配的一些坑
  • 关于适配iOS11和iPhoneX的一些事
相关热词搜索: iOS 适配 iPhone X