ios 如何做x适配_ios iphone xr 1x 2x 3x 图片在xr适配 - CSDN
  • 适配iOS 11有几天了,这中间遇到无数种坑,由于我们项目支持iPad支持横竖屏,改起来简直想哭,好了废话不多说,总结下iOS 11&iPhone X适配过程中遇到的问题。iOS 11适配UISearchController with ...

    适配iOS 11有几天了,这中间遇到无数种坑,由于我们项目支持iPad支持横竖屏,改起来简直想哭,好了废话不多说,总结下iOS 11&iPhone X的适配过程中遇到的问题。

    iOS 11适配

    UISearchController with Navigation

    UISearchController在iOS 11中有较大的改动,如果你项目中有用到,在Xcode 8.3上打包在iOS 11上还是可以正常使用,如果你使用Xcode9….

    横屏

    竖屏
    这样玩意已经不能看了
    下面回顾下iOS 11之前是怎么添加使用的

            self.tableView.tableHeaderView = _searchController.searchBar;

    iOS 11 UISearchController使用在navigationItem添加了两个属性
    - navigationItem.searchController
    - navigationItem.hidesSearchBarWhenScrolling 默认为YES
    iOS 11的使用

        if (@available(iOS 11.0, *)) {
            self.navigationItem.searchController = _searchController;
        } else {
            self.tableView.tableHeaderView = _searchController.searchBar;
        }

    效果

    navigationItem.searchController

    现在能也可以根据滑动来隐藏SearchBar了,但是我遇到的问题不仅仅是这样的,如果你使用UISearchController下一级的页面也使用且hidesSearchBarWhenScrolling为YES,那么在执行push的时候画面会这样….
    注意push和pop过程中导航条下面会有一条留白

    这个问题很尴尬,我到现在还没有解决

    下拉刷新

    很多人都遇到下拉刷新错位的问题,我们项目中也遇到了,直接不能用,很伤心,这是与iOS 11使用新的机制有关,automaticallyAdjustsScrollViewInsets在iOS 11中被被废弃,然后在scrollerView中添加contentInsetAdjustmentBehavior一个这样的属性,为什么这个会影响到下拉刷新这个控件呢,下面我来简单的说一下。
    通常iOS 实现下拉刷新是通过KVO观察者模式,监听UIScrollerView的contentOffset属性,在该属性发生变化时,获取contentoffset的y值,比对初始contentoffset
    详情看下面的代码,简单说明下拉刷新实现部分原理

    /*
    originalInset:,原始偏移值,如果设置automaticallyAdjustsScrollViewInsets .top 偏移为navgationbar.height + statusBar.height
    contentOffset:scrollerView现在的偏移值
    headerHeight :刷新头部View的高度
    
    ps.
    originalInset = scrollView.contentInset,可以这样获取,只获取一次
    */
            CGPoint contentOffset = [[change valueForKey:NSKeyValueChangeNewKey] CGPointValue];
    
    if (originalInset.top - contentOffset.y > headerHeight) {
            //让tableView悬停,显示正在刷新View
             UIEdgeInsets inset = _scrollView.contentInset;
             insetTop.top =  originalInset.top +  headerHeight;
              _scrollView.contentInset = inset;
    }

    通过上面所说的automaticallyAdjustsScrollViewInsets的设置会影响到计算,iOS 11中不在使用,iOS 11 中scrollView.contentInset(初始偏移量为0),但是他又引入了一个新的属性adjustedContentInset,所有我们项目中计算出错,下拉刷新无法,往上滑触发,并进行下移,所有我对代码进行了如下修改

    cgfloat originalTop = originalInset.top;
    if  (iOS 11){
              originalTop = self.adjustedContentInset.top;
    }
    if (originalTop - contentOffset.y > headerHeight) {
             UIEdgeInsets inset = _scrollView.contentInset;
             insetTop.top =  originalInset.top +  headerHeight;
              _scrollView.contentInset = inset;
    }

    上面代码是我修改的思路,上拉刷新也是同样的道理

    iPhone X适配

    如果你的app不需要竖屏,那么恭喜你,减少了很多麻烦,如果需要横屏就要多费些时间了

    Safe area

    Safe area
    iPhone X的适配主要是要把可以操作的控件放到安全区域内


    获取 SafeArea

    属性
    • safeAreaInsets
      该属性可以获取安全区域 UIEdgeInsets
      切记:
      UIViewController中,safeAreaInsets在viewDidLoad之后才有值,如果你在viewDidLoad 中要使用会发现没有值
      可以通过系统方法监听SafeArea改变
    SafeArea 改变方法
    • viewSafeAreaInsetsDidChange
      UIViewController中使用
    • safeAreaInsetsDidChange
      UIView中使用,在重新设置View的Frame或横竖屏变化会调用

    未完,持续更新~

    参考文章链接

    Updating Your App for iOS 11
    Designing for iPhone X
    你可能需要为你的APP适配iOS11
    刘海 |关于iPhone X 的适配

    展开全文
  • iOS iPhone X 适配

    2017-10-09 17:05:46
    //联系人:石虎  ...苹果官方刚刚更新了中文版的iPhone X适配指南,这可是关于iPhone X的第一次重要的技术文档. 官方文档指南链接:https://developer.apple.com/cn/ios/update-apps-for-iphone-x/

    //联系人:石虎  QQ: 1224614774 昵称:嗡嘛呢叭咪哄

    一、概念

    想要适配iPhone X 的,请看:

    苹果官方刚刚更新了中文版的iPhone X适配指南,这可是关于iPhone X的第一次重要的技术文档.


    官方文档指南链接:https://developer.apple.com/cn/ios/update-apps-for-iphone-x/



    谢谢!!!

    展开全文
  • iOS iPhoneX 适配

    2018-06-19 11:47:46
    iPhoneX适配1、导航栏和状态栏 普通 iPhoneX导航栏高度6488状态栏高度2044tabBar4983(其中有34Home Indicator交互区)键盘高度增长为 291pt使用系统原生的导航栏、tabbar系统会自动适配。自定义的都需要适配X。...

    iPhoneX适配

    1、导航栏和状态栏

     

     普通   iPhoneX
    导航栏高度6488
    状态栏高度2044
    tabBar4983(其中有34Home Indicator交互区)

    键盘高度增长为 291pt

    使用系统原生的导航栏、tabbar系统会自动适配。自定义的都需要适配X。比如隐藏了导航栏,使用自定义View代替导航栏的时候,你就需要区分适配。

    约束布局,底层View添加约束的时候减少以superView为参考,使用Safe area为约束布局依据。减少手动适配。

    注意:在Storyboard中和Xib中以safe Aare为基准做在IOS 11之前会有不同的区别。

    2、常用适配宏定义(OC)

    #define kHeight_NavContentBar 44.0f
    #define kHeight_StatusBar (IS_IPHONE_X==YES)?44.0f: 20.0f
    #define kHeight_NavBar (IS_IPHONE_X==YES)?88.0f: 64.0f
    #define kHeight_TabBar (IS_IPHONE_X==YES)?83.0f: 49.0f
    /// iphone-X  |不建议使用
    #define kDevice_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)

    /// 导航高度 兼容X  更适合做适配依据
    #define kNavBar_height [UIApplication sharedApplication].statusBarFrame.size.height + 44


    3.Home Inducator 的影藏

    针对某些界面,也许我们希望全界面显示,影藏Inducator 

    这时候需要重写ViewController中的如下方法:

    // 重写 控制home indicator的影藏
    // 没有交互两秒后影藏
    -(BOOL)prefersHomeIndicatorAutoHidden{
        return YES;
    }
    


    4、Xib适配iPhoneX 

    1.iOS11版本以上

        如果是基于iOS11适配X,你只需要将约束基准调为以Safe Area,就可以解决大部分导航栏和底部栏的适配。

    2.iOS11版本以前

        你就需要以SuperView为基准的辅助约束,否则还是会导致被状态栏挡住的问题。

    综合解决:

        1.添加两条约束

        2.Safe Area为基准的 优先级 大于 以Super View的。  

        3.将SuperView为基准的约束关系设置为大于等于【如下图】。

    添加一个UIView作为自定义导航栏。


    同样的方法也可以适配底部导航栏或视图

    适配效果图



     神奇的是Storyboard里面只需要添加以SafeArea为基础的约束即可。


    参考Safe area layout guides in xib files - iOS 10 --stackOverflow

             iOS 11 safe area layout guide backwards compatibility --stackOverflow

    扩展准确获取iPhone设备型号

    详细推荐参考适配iOS11与iPhoneX

    关于WMPageController 适配iPhone X 

    如果使用第三方滑动标签框架WMPageContorller时,可能会遇到如下问题,(也有可能我没有找到相关的设置。)


    解决:在WMpageController中定义了一个forceLayouSubViews的方法,你可以重载这个方法设置menuView的frame;

    //适配iPhone X
    -(void)forceLayoutSubviews{
        [super forceLayoutSubviews];
        if (kNavBar_height == 88) {
            //具有前刘海 如iPhone X
            self.menuView.frame = CGRectMake(0, 44, self.menuView.bounds.size.width, 44);
        }
    }

    适配后


    展开全文
  • ios iphonex适配

    2018-08-26 14:33:43
    除了iOS11系统的更新之外,iPhoneX刘海的打理工作也是必不可少。以前我们总是庆幸作为iOS开发者,不必像Android开发者需要考虑各种不同机型的适配问题。但是现在,随着iPhone各种历史版本的存在,各种花式的新版本.....

    一、前言

    iOS11发布也有一段时间了,每次版本升级,相关的适配工作当然是下个版本的核心工作之一。而且这次iOS11的更新,相对于iOS10的更新来说,改动点还是比较多的。除了iOS11系统的更新之外,iPhoneX刘海的打理工作也是必不可少。以前我们总是庆幸作为iOS开发者,不必像Android开发者需要考虑各种不同机型的适配问题。但是现在,随着iPhone各种历史版本的存在,各种花式的新版本产生,不同版本之间的适配问题,也是未来我们作为iOS开发者必然要考虑的重要问题之一。

    这次我主要负责我们这边两款App(滴滴代驾司机端+驾管App)iOS11&iPhoneX适配工作。中间也躺过很多坑,一一记录了下来写成这篇文章,既是对自己工作的一次总结,也可以分享给其他iOS开发者,能够让大家少趟一些坑。

    本文将分为三个部分,分别从三方库适配、UI适配、权限适配、补充知识等方面分别进行展开。

    二、三方库适配问题。

    2.1 CocoaLumberjack 编译出错

    1.png

     

    CocoaLumberjack编译报错

    问题原因:

    从错误提示可以看出在Xcode9中os_log_error的第二个参数format必须要为不可变的string类型,而不是char*。

    解决方案:

    我们只要改成如下形式就可以了

    1

    os_log_error(OS_LOG_DEFAULT, "%s", msg);

    CocoaLumberjack的作者也在[issue883](https://github.com/Co coaLumberjack/CocoaLumberjack/issues/883)中解决了该问题。如果你的工程是pod依赖的话,将pod版本升级到3.3.0版本即可。

    2.2 WebViewJavascriptBridge崩溃处理

    我们代驾司机端web容器使用的是WKWebView,jsBridge使用的是WebViewJavascriptBridge这个三方库,更新到Xcode9之后,只要进入WKWebView容器,就会产生如下crash:

    1.png

     

    WebViewJavascriptBridge crash

    问题原因:

    当你使用WKWebView作为你的H5容器的时候,WKNavigationDelegate有个回调就是

    1

    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;

    这个回调主要负责根据webView、navigationAction相关信息决定这次跳转是否可以继续进行。调用decisionHandler(WKNavigationActionPolicyAllow);响应这次跳转请求。调用decisionHandler(WKNavigationActionPolicyCancel);就是不响应这次跳转请求。

    查看WebViewJavascriptBridge源码可以看出,在WKWebViewJavascriptBridge.m文件中

    1.png

     

    WKVebViewCrash.png

    在Xcode9中,如果连续看了两次调用decisionHandler方法就会crash。这个问题在之前版本的Xcode均是没有问题的。

    解决方案:

    • 方案一:修改源码

      在上面代码的149行和150行之间添加return;

    • 方案二:pod依赖,原作者没有修改此问题,无法修改源码,也可以在业务代码中进行规避。

      在你自己业务代码的对应对调中添加排除代码,如下:

     

    1.png

    WKWebViewCrash2.png

    2.3 LumberjackConsole UI适配

    1.png

     

    问题原因:

    iOS7之后,如何你设置self.edgesForExtendedLayout = UIRectEdgeNone的话,系统通过设置UIViewController的automaticallyAdjustsScrollViewInsets属性来自动调整UIScrollView的contentInset,使UIscrollView能够呈现在我们的可是范围之内,而不会被navBar挡住。这个属性在iOS11中被废弃掉了,在iOS11中代替该属性功能的则是UIScrollView类中的contentInsetAdjustmentBehavior和adjustedContentInset属性.在iOS11中用来决定scrollView超出安全区域与边缘距离的属性是adjustedContentInset而不是contentInset。当scrollView超出安全区域时系统会自动调整SafeAreaInsets值,进而影

    响 adjustedContentInset,所以导致scrollView下移20pt或者64pt。当使用自定义的 navigationbar,并且scrollView的frame超出安全区域,SafeAreaInsets为(20,0,0,0);当使用系统的navigationbar,SafeAreaInsets为(64,0,0,0)。

    解决方案:

    在UIScrollView或者UITableView初始化的地方,加入如下代码即可。

    针对LumberjackConsole这个开源库,我们可以在PTEConsoleTableView.m文件中的commonInit最后加入如下代码即可。

     

    1

    2

    3

    if([self respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]){

          [self setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];

    }

    三、UI适配

    3.1 NavBar中右上角的customView产生偏移

    1.png

     

    问题原因:

    在iOS11中,新的导航视图,使用了AutoLayout布局。而我们这边右上角的两个按钮组合成一个customView,然后把这个customView设置给setRightBarButtonItems而来。customView内部都是frame布局,所以在自动布局下面出错。

    解决方案:

    NavBar中的customView里面针对iOS11,均要采用自动布局。

    1.png

    3.2 NavBar中自定义TitleView产生偏移

    1.png

    问题原因:

    同上

    解决方案:

    同上

    这里需要注意一点,自动布局的UI是延迟设置frame的。如果aView采用自动布局。然后你马上调用它的aView.bounds是不正确的。

    3.3 NavBar中按钮的响应区域都变小了。

    1.png

    问题原因:

    iOS11之前,虽然我们设置了NavBar上每一个[btn sizeToFit]。苹果依然会帮我们把每一个按钮的点击区域扩大,可以点击区域如上图绿色区域所示。但是在iOS11中,你的按钮的bounds为多大,那你的点击区域就只有多大。估计这个改动也与这次NavBar的大概有关系。

    解决方案:

    扩大每一个btn的bounds,而不要使用sizeToFit方法。

    3.4 NavBar的BarButtonItem无法贴边。有(非plus手机16pt,plus手机20pt)的区域浪费。造成UI偏移,并且最左侧和最右侧区域无法点击。

    1.png

    问题原因:

    这个UINavigationBarContentView平铺在导航栏中作为iOS11的各个按钮的父视图,该视图的所有的子视图都会有一个layoutMargins被占用,也就是系统调整的占位。

    解决方案:

    去掉系统默认占位。

    系统并没有提供我们直接去掉系统默认占位的方法,那怎么做呢?

    我们新建一个UINavigationBar的分类,hook住UINavigationBar的layoutSubviews方法。然后遍历View,重新设置layoutMargin约束。

    1.png

    重新设置layoutMargin约束

    3.5 UITableView 默认开启Self-Sizing,导致UI显示有问题。

    1.png

    问题原因:

    在iOS11中UITableView会默认使 Self-Sizing,这会导致tableView

    的 estimatedRowHeight 、 estimatedSectionHeaderHeight 、 estimatedSectionFooterHeight 的高度估算属性由默认的0变成 UITableViewAutomaticDimension ,reloadData时可能会导致最后显示的contentSize与预想的不一致;

    同时在iOS11中如果不实现 -tableView: viewForHeaderInSection: 和 tableView: viewForFooterInSection: 方法,则 -tableView: heightForHeaderInSection: 和 - tableView: heightForFooterInSection: 不会被调用,而iOS11之前则没问题。上述都可能会导致界面出现错乱。

    解决方案:

    单独关闭摸一个UITableView的Self-Sizing。

    1

    2

    3

        _tableView.estimatedRowHeight = 0.;

        _tableView.estimatedSectionFooterHeight = 0.;

        _tableView.estimatedSectionHeaderHeight = 0.;

    关闭所有的UIScroolView、UITableView和UICollectionView的Self-Sizing:

    1

    2

    3

    4

       UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

       UITableView.appearance.estimatedRowHeight = 0;

       UITableView.appearance.estimatedSectionFooterHeight = 0;

       UITableView.appearance.estimatedSectionHeaderHeight = 0;

    3.6 keyWindow获取错误, 导致UI问题。

    1.png

    问题原因:

    机器猫图标是一个UIWindow,windowLevel级别比UIWindowLevelStatusBar还高,所以可以常驻UI最上方。第一次进入该页面,点击“更多”,弹出popView,点击收藏,弹出系统UIAlertView,此时UIAlertView变成了keyWindow。当UIAlertView消失的时候,keyWindow会被谁接管呢?

    iOS11之前,弹出UIAlertView之前的keyWindow是[[UIApplication sharedApplication].delegate window],那么消失的时候,keyWindow还是[[UIApplication sharedApplication].delegate window]。

    iOS11, 弹出UIAlertView之前的keyWindow是[[UIApplication sharedApplication].delegate window],那么消失的时候,keyWindow变成z轴最高的UIWindow,即变成了机器猫那个window。所以导致popView被添加到机器猫window中,造成UI样式问题。

    解决方案:

    重写自定义UIWindow的becomeKeyWindow的方法,每次自定义window将会变为keyWindow的时候,把keyWindow改成[[UIApplication sharedApplication].delegate window]。

     

    1

    2

    3

    4

    - (void)becomeKeyWindow{

        UIWindow *appWindow = [[UIApplication sharedApplication].delegate window];

        [appWindow makeKeyWindow];

    }

    3.7 状态栏高度写死为20pt,导致在iPhoneX上面遮挡住statusBar。

    1.png

    问题原因:

    iPhoneX上的statusBar的高度为44pt,跟其他iPhone型号的20pt不一样。所以以后我们在以statusBar为定位点的时候,不能写死20pt。而要使用[UIApplication sharedApplication].statusBarFrame.size.height来获取,为了方便,可以定义为宏,放到pch文件中,如下:

    1

    #define kApplicationStatusBarHeight  [UIApplication sharedApplication].statusBarFrame.size.height //状态栏的高度

    解决方案:

    状态栏高度定位的时候不要写死20,要使用[UIApplication sharedApplication].statusBarFrame.size.height来获取。

    补充

    iOS11之前导航栏默认高度为64pt(这里高度指statusBar + NavigationBar),iOS11之后如果设置 prefersLargeTitles = YES则为96pt,默认情况下还是64pt,但在iPhoneX上由于刘海的出现 statusBar由以前的20pt变成 44pt,所以iPhoneX上高度变为88pt,如果项目里隐藏了导航栏加了自定义按钮之类的,这里需要注意适配一下。

    3.8 通过遍历statusBar的subviews中的UIStatusBarDataNetworkItemView获取网络状态在iPhoneX上会crash。

    问题原因:

    之前我们采用遍历statusBar,获取UIStatusBarDataNetworkItemView实例,再获取网络状态的。代码如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    + (NSNumber *) dataNetworkTypeFromStatusBar {

        UIApplication *app = [UIApplication sharedApplication];

        NSArray *subviews = [[[app valueForKey:@"statusBar"] valueForKey:@"foregroundView"] subviews];

        NSNumber *dataNetworkItemView = nil;

         

        @try {

            if ([subviews count] > 0) {

                for (id subview in subviews) {

                    if([subview isKindOfClass:[NSClassFromString(@"UIStatusBarDataNetworkItemView"class]]) {

                        dataNetworkItemView = subview;

                        break;

                    }

                }

            }

        }

        @catch (NSException *exception) {

        }

        @finally {

        }

         

        return [dataNetworkItemView valueForKey:@"dataNetworkType"];

    }

    但是在iphoneX的statusBar的内部结构已经改变,不能根据遍历获取UIStatusBarDataNetworkItemView的状态获取网络状态状态。

    可以通过po [statusBar recursiveDescription]打印出来iphoneX内部结构了,可以看出变化非常的大。

    解决方案:

    使用AFNetworking中的AFNetworkReachabilityManager类,或者使用Reachability库获取网络连接状态。

    四、权限适配

    4.1 无法获取定位信息,第一次打开app也无法弹出定位权限提示框

    问题原因:

    iOS11 定位相关的权限做了更改,在iOS11上使用了新的定位权限key。

    解决方案:

    如果原来申请的权限是始终允许NSLocationAlwaysUsageDescription,那么需要在保留原来的key的基础上增加NSLocationWhenInUseUsageDescription和NSLocationAlwaysAndWhenInUsageDescription。

    五、其他一些补充

    5.1 如何判断该设备是不是iPhoneX

    1.png

    5.2 一些常用的宏定义

    1

    2

    3

    4

    5

    #define IS_IPHONE_X [KDDeviceHelper is_iPhone_X]

    #define IPHONE_NAVIGATIONBAR_HEIGHT  (IS_IPHONE_X ? 88 64)

    #define IPHONE_STATUSBAR_HEIGHT      (IS_IPHONE_X ? 44 20)

    #define IPHONE_SAFEBOTTOMAREA_HEIGHT (IS_IPHONE_X ? 34 0)

    #define IPHONE_TOPSENSOR_HEIGHT      (IS_IPHONE_X ? 32 0)

    六、参考文献

    展开全文
  • iOS iPhone X适配

    2018-11-14 11:17:54
    IPhoneX 导航栏 状态栏 tabar高度 1.导航栏高度 88 非IPhoneX手机为64 2.状态栏高度 44 非IPhoneX手机为20 3.tabar高度 83 非IPhoneX手机为49  如下图所示:   #define IS_IPHONE_X ([UIScreen ...

    IPhoneX 导航栏 状态栏 tabar高度

    1.导航栏高度 88 非IPhoneX手机为64

    2.状态栏高度 44 非IPhoneX手机为20

    3.tabar高度 83 非IPhoneX手机为49  

     如下图所示:

     

    #define IS_IPHONE_X ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
    
    #define IS_IPHONE_Xr ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(828, 1792), [[UIScreen mainScreen] currentMode].size) : NO)
    
    #define IS_IPHONE_Xs ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO)
    
    #define IS_IPHONE_Xs_Max ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1242, 2688), [[UIScreen mainScreen] currentMode].size) : NO)
    
    //状态栏高度
    #define Height_StatusBar ((IS_IPHONE_X==YES || IS_IPHONE_Xr==YES || IS_IPHONE_Xs==YES || IS_IPHONE_Xs_Max==YES) ? 44.0f : 20.0f)
    //导航栏高度
    #define Height_NavBar    ((IS_IPHONE_X==YES || IS_IPHONE_Xr==YES || IS_IPHONE_Xs==YES || IS_IPHONE_Xs_Max==YES) ? 88.0f : 64.0f)
    //tabbar高度
    #define Height_TabBar    ((IS_IPHONE_X==YES || IS_IPHONE_Xr==YES || IS_IPHONE_Xs==YES || IS_IPHONE_Xs_Max==YES) ? 83.0f : 49.0f)

     

    展开全文
  • 《iPhone X适配没那么复杂,但也不是看上去这么简单》 《取消了Home键的 iPhone X,交互方式都有哪些变化?》 关键属性: ios 11之后原来automaticallyAdjustsScrollViewInsets属性无效,修改为 @available...
  • 要求项目支持到ios8以上,我看网上的资料,说适配iphonex,xib 约束用safe area就可以,可是safe area 是ios9以上才有的,我这要求还支持ios8,怎么办呢,之前在网上找只有用代码实现这个需求了,但是我又不想大改动...
  • iOS开发 iPhone X适配

    2017-11-06 15:46:13
    今天升级到Xcode9.0,运行项目,所谓的全屏 iPhone X,but 页面好像也没有全屏,于是根据之前的适配经验,总算初步解决了这个问题,记录如下,以备后需。 App 页面适配 适配前 问题:App 未全屏...
  • 掌握苹果最新适配,一篇就够了!通过真实上线的App细致讲述iOS11及iPhone X适配所需要的全部工作,包括顶部statusBar、刘海、scrollview下沉及底部tabBar等适配注意事项。
  • 除了代码上的坑,更恶劣的就是新的iPhone咯,看到iPhone8和8P的时候内心还算不错的,不过iPhone X就…一个大刘海,适配太坑所以今天就来说说这个iPhone X大刘海的事,最近在各个群里都是遇到了很多问题,我大体总结...
  • iOS11和iPhone X适配

    2017-12-19 16:36:26
    随着iOS11和xcode9刚开始正式发布,小编也迫不及待的更新了xcode9,手机也顺利更新到iOS,也终于见到iPhone X 的真面不,看着齐刘海的样式,小编心里淡淡的忧伤,怎么适配,如何快速适配到项目中,成了一个蛋疼的...
  • iPhone X适配方案传送门:10分钟适配 iOS11 & iPhoneX发现问题升级Xcode 9 + iOS 11后,发现原本没问题的collectionView和tableView像是中了风一样,头部刷新UI出现了错乱。查阅发现 iOS11弃用了...
  • iOS11 和 iPhone X适配

    2017-09-28 09:19:49
    一、首页进行iOS11系统的适配。1.我手中的 iPhone6s更新到了11,发现UITableView 和 UICollectionView 的 页面页脚变宽了。原因是因为 iOS11 默认开启了 self-Sizing, 我们可以通过实现estimatedRowHeight相关的属性...
  • 最新适配iOS11和iPhoneX指南,全面详细指导各项适配,助力应用新版本上架。
  • ios11和iphonex适配

    2018-02-24 14:34:41
    资料地址:很详细的资料:https://www.jianshu.com/p/3a9ad4f0fa32?appinstall=0适配遇到的一些坑:http://blog.csdn.net/st646889325/article/details/79066361
  • 一,想必大多开发者将自己的项目跑到iPhoneX...如果使用的是LaunchImage方式启动图的话,直接在iOS8.0 and later 下面portrait打钩,就会出现iphoneX的启动图(如图) 将美术做好的图片拖进去就好了,大小是:1125x2
  • 不过大的方面苹果貌似也就 AR 和 GM 机器学习了,9月13日凌晨1点,苹果开了新品发布会,相信大家都已经知道Phone X 的刘海了,看起来不是很雅观,对于iOS开发者来说,适配工作也带来了麻烦,iOS11在新旧API 方面了...
  • iOS11之前导航栏默认高度为64pt(这里高度指statusBar + NavigationBar),iOS11之后如果设置了prefersLargeTitles = YES则为96pt,默认情况下还是64pt,但在iPhoneX上由于刘海的出现statusBar由以前的20pt变成了44pt...
  • 一.APP在iPhoneX运行后不能占满屏幕,上下都有多余的边解决方法:把旧的image.xcassets中的LaunchImage删掉,重新创建并在Images.xcassets中为iPhone X添加一个LaunchImage,新的启动图尺寸为1125px × 2436px(375pt ×...
  • 故事背景iPhone X 刘海机于9月份发布以来,备受诟病,给科技带来一个宴会.给coder却带来一份淡淡的凉意---> 怎么适配呢?我们的APP会不会被遮住,多出来一个刘海? 我们底下的Tabbar会变成什么样? Home键去哪了? 公司会...
1 2 3 4 5 ... 20
收藏数 19,804
精华内容 7,921
关键字:

ios 如何做x适配