序言:

  更新了很久的Linux,我怕朋友们都视觉疲劳了,今天就更新在学ios开发时候,对一些知识点的理解。希望各位会喜欢!  

正文:

  UIStackView 类提供了一个高效的接口用于平铺一行或一列的视图组合,stackView提供了高效的单行单列自动布局的手段,一般情况下,我们不需要对stackView.subviews做任何约束,只需要通过对stackView的axis, distribution, alignment, spacing属性进行修改;

  • axis(轴向) 属性决定了 stack 的朝向,只有垂直或水平;
  • distribution(分布) 属性决定了其管理的视图在沿着其轴向上的布局;
  • Fill : 铺满
    Fill Equal : 等宽铺满
    Fill Proportionally : 等比例铺满
    Equal Spacing :等距离放置
    Equal Centering :各个试图的中心距离保持一致,不够放置则压缩后面的试图距离;
  • alignment(对齐) 属性决定了其管理的视图在垂直于其轴向上的布局;
  • Fill : 垂直方向上铺满
    Top : 沿顶端对齐
    Center : 沿中心线对其
    Bottom : 沿底部对齐
    First Baseline : 按照第一个子视图的文字的第一行对齐,同时保证高度最大的子视图底部对齐(只在axis为水平方向有效)
    Last Baseline : 按照最后一个子视图的文字的最后一行对齐,同时保证高度最大的子视图顶部对齐(只在axis为水平方向有效)
  • spacing(空隙) 属性决定了其管理的视图间的最小间隙;
  • baselineRelativeArrangement 属性决定了其视图间的垂直间隙是否根据基线测量得到,选中 Baseline Relative 将根据subview的基线调整垂直间距;
  • layoutMarginsRelativeArrangement 属性决定了 stack 视图平铺其管理的视图时是否要参照它的布局边距,选中 Layout Margins Relative 将相对于标准边界空白来调整subview位置;

  UIStackView 实现有对齐要求的视图布局非常非常得简单,而使用 UICollectionView 和 UITableView 来实现,相对而言就比较麻烦,相比于collectionView而言,stackView更加小巧灵活,然而根据过来人的说法,想要完成更精致的效果,最终还是得靠UICollectionView;

  • 源代码:
  •  #import "ViewController.h"
    
     @interface ViewController ()
    
     @property (weak, nonatomic) IBOutlet UIStackView *VerticalStackView;
    @property (weak, nonatomic) IBOutlet UIStackView *HorizontalStackView; @end @implementation ViewController - (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    } - (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    } - (IBAction)addStarBtn:(id)sender { UIImageView *starImg = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"star"]];
    starImg.contentMode = UIViewContentModeScaleAspectFit; [self.HorizontalStackView addArrangedSubview:starImg];
    [UIView animateWithDuration:0.25 animations:^{
    [self.HorizontalStackView layoutIfNeeded];
    }]; } - (IBAction)reduceStarBtn:(id)sender { UIImageView *starImg = self.HorizontalStackView.subviews.lastObject; [self.HorizontalStackView removeArrangedSubview:starImg];
    [self.HorizontalStackView reloadInputViews];
    [UIView animateWithDuration:0.25 animations:^{
    [self.view layoutIfNeeded];
    [starImg removeFromSuperview];
    }];
    } @end

使用环境:


  根据GitHub上Most Stars前几名的demo来看,stackView最多就是应用于运行时的界面变化,其自动约束的特性尽显无疑,如下图:

  

结束总结: 

  博客园:爱家人爱老婆的IT男

  微信公众号:程序猿的野生香蕉【公众号:你可以下载到我的教程,工具,笔记,以及其他我分享的资源,资源今天可能晚点上传,不过我会每天更新。】----附上官方UIstackView :回复 UIstackView-----

最新文章

  1. c#面向对象基础技能——学习笔记(三)基于OOP思想研究对象的【方法】
  2. Mysql有用的面试题
  3. loading动画效果记录
  4. struts2基础篇(1)
  5. python学习笔记:Day01
  6. 【算法】A*改进算法
  7. Windows窗口样式速查参考,Delphi窗口控件的风格都有它们来决定(附Delphi何时用到它们,并举例说明)good
  8. 六一儿童节PHP宝宝又被围剿了,迅速围观!
  9. MyBatis+mysql 简单分页
  10. 团队作业8——第二次项目冲刺(Bata版本)--第二天
  11. Android 中adb 命令(实用)
  12. 哪些CSS是可以被继承的--简单整理
  13. redis 突然大量逐出导致读写请求block
  14. git教程——工作流程
  15. 常用的settings.xml文件
  16. C#连接字符串
  17. Redis、Memcache、MongoDb的优缺点
  18. Kubernetes代码解读-apiserver之list-watch
  19. 2018.4.23 深入理解java虚拟机(转)
  20. 《python源码剖析》,看看

热门文章

  1. Java中的显示锁 ReentrantLock 和 ReentrantReadWriteLock
  2. 【nginx】负载均衡和proxy的配置
  3. CentOS 7 修改时区(转)
  4. 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇
  5. hadoop yarn configure
  6. Mathout 安装部署
  7. 3D俄罗斯方块设计
  8. UESTC 887 方伯伯的儿童节 --树形DP
  9. 2014 Super Training #8 G Grouping --Tarjan求强连通分量
  10. xshell5 启动显示 mfc110.dll msvcp110.dll 未找到问题 解决办法