iOS_OC_UIStackView属性和方法讲解
/// 从iOS9开始 提供用于快速实现布局的控件
/// 特点是不用写具体的约束 而是通过属性声明想要的一个布局效果 内部自动添加完善的约束
@interface UIStackView : UIView
/// 构造方法
- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views; // Adds views as subviews of the receiver.
/// 被管理布局的子views
@property(nonatomic,readonly,copy) NSArray<__kindof UIView *> *arrangedSubviews;
/// 添加/移除/插入一个view 并对其约束进行管理
/// addSubView也能添加一个子view进来 不过约束不受控制
- (void)addArrangedSubview:(UIView *)view;
- (void)removeArrangedSubview:(UIView *)view;
- (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex;
/// 声明布局方向
@property(nonatomic) UILayoutConstraintAxis axis;
/// 声明与布局方向同向的一个布局规则
/// 比如axis定义为水平布局 那么这个属性就是定义水平方向上的布局规则 反之 就是定义垂直方向上的布局规则
@property(nonatomic) UIStackViewDistribution distribution;
/// 跟distribution相反 定义非布局方向上的一个布局规则
@property(nonatomic) UIStackViewAlignment alignment;
/// 设置默认的一个控件间距
@property(nonatomic) CGFloat spacing;
/// spacing是对全部子控件生效的 这个方法是从iOS11开始可以针对某个控件 单独设置不同的spacing
- (void)setCustomSpacing:(CGFloat)spacing afterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));
- (CGFloat)customSpacingAfterView:(UIView *)arrangedSubview API_AVAILABLE(ios(11.0),tvos(11.0));
/// 声明文本控件在计算spacing的时候 是否针对字体的基线
/// 同一个label用富文本显示不同字体的时候 即使fontsize是一样的 也会出现不同字体不是底部对齐的情况 就是因为不同字体 基线不同
@property(nonatomic,getter=isBaselineRelativeArrangement) BOOL baselineRelativeArrangement;
/// 从iOS8开始 UIview有layoutMargins属性
/// 这个Bool值就是声明子控件布局约束是针对layoutMargins 还是 针对bounds
/// 打个比方 当一个UIView的layoutMargins.top = 10的时候,这个时候子控件的top如果 = 5,那么当布局针对bounds的时候 顶部留白就是5,如果是针对layoutMargins,就是加上这个layoutMargins.top = 10,那么顶部留白就是15。
@property(nonatomic,getter=isLayoutMarginsRelativeArrangement) BOOL layoutMarginsRelativeArrangement;
@end
iOS_OC_UIStackView属性和方法讲解相关推荐
- ExtJs window(一)使用API以及window常用属性和方法
1.使用API xtype:组件的别名 Hierarchy 层次结构 Inherited mixins 混入的类 Requires 该组件需要使用的类 configs:组件的配置信息 properti ...
- python程序实例讲解_Python编程之属性和方法实例详解
本文实例讲述了Python编程中属性和方法使用技巧.分享给大家供大家参考.具体分析如下: 一.属性 在python中,属性分为公有属性和私有属性,公有属性可以在类的外部调用,私有属性不能在类的外部调用 ...
- 基于js对象,操作属性、方法详解
一,概述 在Java语言中,我们可以定义自己的类,并根据这些类创建对象来使用,在Javascript中,我们也可以定义自己的类,例如定义User类.Hashtable类等等. 目前在Javascrip ...
- python3类的继承详解_基于python3 类的属性、方法、封装、继承详解
下面小编就为大家带来一篇基于python3 类的属性.方法.封装.继承实例讲解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 Python 类 Python中的类提供了 ...
- Java集合框架概述及Collection接口方法讲解
Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储.另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容 ...
- h5的横线_使用HTML5 Canvas绘制直线或折线等线条的方法讲解
HTML5 Canvas基本概念讲解html5,这个应该就不需要多作介绍了,只要是开发人员应该都不会陌生.html5是「新兴」的网页技术标准,目前,除IE8及其以下版本的IE浏览器之外,几乎所有主流浏 ...
- RestTemplate使用实战-exchange方法讲解-HTTP请求
RestTemplate使用实战-exchange方法讲解 2019-10-28 12:40:51 阅读:160 来源: 互联网 标签:HTTP 请求 exchange RestTemplate ...
- vue3组件之间通信(三)——爷孙组件传递属性和方法
文章目录 1:setup函数传递属性和方法($attrs) 1:代码 2:主要代码和详细讲解 3:注意点 2:script setup 语法糖传递属性和方法 1:代码 2:主要代码和详细讲解 3:注意 ...
- JavaScript 中BOM及window的相关属性及方法
概述:BOM (全称bowser object model) 浏览器对象模型,他是用于操作浏览器相关的内容.BOM是一个缺乏规范的东西,为了保证他的规范性产生了一系列的共用对象来解决这个问题.沿用至今 ...
最新文章
- 深度学习引擎的终极形态是什么?
- Ubuntu16.04能识别U盘,但无法识别光盘
- APK反编译得工具总结(转载)
- No1_6.字符串的基本操作2_Java学习笔记
- 解决:Access denied for user ‘root‘@‘localhost‘ (using password: YES)
- CI下载与安装_基础配置_MVC
- mysql 什么时候用内连接_mysql显示内连接和隐式内连接的区别,什么时候非要用到显示内连接。...
- 域服务器系统建设方案,AD域及Exchange部署专项方案.doc
- Windows如何设置右键快捷键
- oracle 索引详解 注:转自红黑联盟非原创
- Android自定义星星评分控件,高效
- 【Ruby on Rails全栈课程】3.7 邮件发送(SendCloud、MailGun)
- flex布局以及实现垂直居中
- html5 ios keychain,iOS10适配之Keychain读写失败
- 谁有全民一起mysql_我是Redis,MySQL大哥被我害惨了!
- OpenCv初学者学习笔记(一):图像视频的加载与显示
- [产品07]-产品设计定律-菲茨定律/席克定律
- 如何防止勒索病毒祸害医院:不要裸奔,要灾备造就安全
- 网页排序算法之PageRank
- 阿里云服务器MySQL与本地连接(Linux)