zoukankan      html  css  js  c++  java
  • UIStackView

    1. 使用UIStackView,要知道,其子视图的很多约束就无效了

    2. 使用UIStackView,要知道,需要先把其约束设置好

    3. UIStackView的属性:

    3.1 alignment

    主要设置非轴方向子视图的对齐方式。
    typedef NS_ENUM(NSInteger, UIStackViewAlignment) {

    UIStackViewAlignmentFill,//子视图填充StackView

    UIStackViewAlignmentLeading,//子视图左对齐(垂直方向)

    UIStackViewAlignmentTop =UIStackViewAlignmentLeading,//子视图顶部对齐(水平方向)

    UIStackViewAlignmentFirstBaseline,// 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(水平方向)

    UIStackViewAlignmentCenter,//子视图居中对齐

    UIStackViewAlignmentTrailing,//子视图右对齐(垂直方向)

    UIStackViewAlignmentBottom =UIStackViewAlignmentTrailing,//子视图底部对齐(水平方向)

    UIStackViewAlignmentLastBaseline,// 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(水平方向)

    NS_ENUM_AVAILABLE_IOS(9_0);

    3.2 distribution 子视图的分布

    下面的例子都是以纵向为例

    typedef NS_ENUM(NSInteger, UIStackViewDistribution) {
    
    UIStackViewDistributionFill = 0,
    
    UIStackViewDistributionFillEqually,
    
    UIStackViewDistributionFillProportionally,
    
    UIStackViewDistributionEqualSpacing,
    
    UIStackViewDistributionEqualCentering,
    
    } NS_ENUM_AVAILABLE_IOS(9_0);

    3.2.1. UIStackViewDistributionFill

    Fill,就是填满了。这里分2种情况。

    情况1,StackView的大小是固定的,那么,设置好其中元素的约束值,最后一个元素不设置,最后一个元素就会填满

    情况2. StackView的大小不是固定的,有一个约束没有设置,假设是高度没有设置,那么,设置它的子视图的高度,StackView的高度就会自动调整到包裹住自己的元素

    3.2.2. UIStackViewDistributionFillEqually

    这个比较好理解,就是会自动调整高度,使它们高度一致。

    也是存在2中情况,当stackview的高度有约束时,我们就不需要对子view添加高度约束了,系统会为我们做好。

    当stackview的高度没约束时,我们就必须提供某个子view的高度约束,让系统好计算出剩下子view的高度和stackview的高度。

    3.2.3.UIStackViewDistributionFillProportionally

    按照原比例缩放。原比例哪里来?官方文档说,来自intrinsic size,我感觉比较简单的方法还是自己添加约束。

    这个属性,一般是stackview的高度有约束,而4个subview的高度也有约束,注意subview的高度约束的priority要低于1000。stackview可以根据subview的约束,计算出比例,进行缩放。

    3.2.4.UIStackViewDistributionEqualSpacing 与 UIStackViewDistributionEqualCentering

    这2个选项也是应用于stackview高度确定,subview的高度也确定,想让subview比较均匀地分布在stckview中。均匀分布的方法不同,所以有2个选项。

    4. 补充

    另外,stackview的一个特点是,当把其中的一个子view hidden后,布局会重新渲染,就如同android布局中的 gone 选项,十分好用!省去了以前大把大把的代码。

    5. 参考

    http://www.cnblogs.com/breezemist/p/5776552.html 

    http://blog.csdn.net/it_kaka/article/details/52056114

    http://blog.csdn.net/hard_man/article/details/50888377

  • 相关阅读:
    STL容器内数据删除
    grep 同时满足多个关键字和满足任意关键字
    程序运行栈空间不足程序崩溃问题
    VS2010中设置程序以管理员身份运行
    python 包详解
    select 详解
    Hdu 1166
    CF1204C
    CF1204B
    CF1204A
  • 原文地址:https://www.cnblogs.com/SimonGao/p/6354187.html
Copyright © 2011-2022 走看看