美文网首页
iOS11 新特性,如何适配iOS11(二)

iOS11 新特性,如何适配iOS11(二)

作者: 达了个D | 来源:发表于2017-11-07 16:34 被阅读0次

    管理margins 和 islets

    layout margins

    基于约束的Autolayout,使我们方便的布局视图。Auto layout为每一个View 都定义了margin。margin是指控件显示内容的边缘与控件边缘的距离。

    可以用layoutMargins或者layoutMarginsGuide属性获得view的margin,margin是视图内部的一部分。layoutMargins允许获取或者设置UIEdgeInsets结构的margin。layoutMarginsGuide则获取到只读的UILayoutGuide对象。

    在iOS11新增了一个属性:directional layout margins,该属性是NSDirectionalEdgeInsets结构题类型的属性:

    typedef  struct   NSDirectionalEdgeInsets{

    CGFloat top,leading,bottom,trailing;

    }NSDirectionalEdgeInsetsAPI_AVAILABLE(ios(11.0),tvos(11.0),watchos(4.0));

    layoutMargins是UIEdgeInsets结构体类型的属性:

    typedef  struct  UIEdgeInsets{ 

    CGFloat   top, left, bottom, right;

    }UIEdgeInsets;

    从定义来看,NSDirectionalEdgeInsets用leading 和 trailing 代替了left和right。

    安全区域(Safe Area)


    在iOS11 中topLayoutGuide和bottomLayoutguide被废除了,取而代之的就是safeArea的概念,safeArea好似描述你的视图不被任何内容遮挡的方法。它提供两种方式:safeAreaInsets或safeAreaLayoutGuide来提供给你safeArea的参照值,即 insets 或者 layout guide。 safeArea区域如图所示:


    如果有一个自定义的viewController,你可能要添加你自己的bars,增加safeAreaInsets的值,可以通过一个新的属性:addtionalSafeAreaInsets来改变safeAreaInsets的值,当你的viewController改变了它的safeAreaInsets值时,有两种方式获取到回调:

    UIView.safeAreaInsetsDidChange()UIViewController.viewSafeAreaInsetsDidChange()

    相关文章

      网友评论

          本文标题:iOS11 新特性,如何适配iOS11(二)

          本文链接:https://www.haomeiwen.com/subject/lwyjmxtx.html