iOS9之UIStackView

2023-12-08 04:48
文章标签 ios9 uistackview

本文主要是介绍iOS9之UIStackView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

iOS9之UIStackView

苹果在iOS9新增了一个简易的布局控件UIStackView,它是一个基于 Auto Layout 的抽象层从而使布局属性的创建简单化,它可以将一组 UIView 视图进行垂直或水平方向的排列。

  • UIStackView 既可以用代码编写也可以在 Interface Builder 中设计(简易xib更方便适用)。

  • 你可以在一个主 UIStackView 中嵌套 UIStackView 从而让视图精确放置到相应的位置

下面就具体介绍一下UIStackView的一些方法和属性

一.方法

1.初始化数组

//OC中- (instancetype)initWithArrangedSubviews:(NSArray<__kindof UIView *> *)views;//Swiftlet stackView1 = UIStackView(arrangedSubviews: subViews)

2.添加子视图

//OC- (void)addArrangedSubview:(UIView *)view;//SwiftstackView.addArrangedSubview(UIView)

3.移除子视图

//OC- (void)removeArrangedSubview:(UIView *)view;//SwiftstackView1.removeArrangedSubview(UIView)

4.根据下标插入子视图

//OC- (void)insertArrangedSubview:(UIView *)view atIndex:(NSUInteger)stackIndex;//SwiftstackView1.insertArrangedSubview(UIView, atIndex: Int)

二.属性

1.布局方向

stackView.axis = .Horizontal/**************/Horizontal -> UILayoutConstraintAxisHorizontal水平方向布局Vertical  -> UILayoutConstraintAxisVertical垂直方向布局

2.内容物填充样式

stackView.distribution = .FillEqually/****************/Fill -> UIStackViewDistributionFill填充整个UIStackView,并且根据内部子视图尺寸对子视图尺寸进行动态调整。Fill Equally -> UIStackViewDistributionFillEqually根据视图大小平均分配UIStackView尺寸,等比例填充UIStackView,过程中会根据分配的大小改变子视图尺寸。Fill Proportionally -> UIStackViewDistributionFillProportionally根据之前的比例填充UIStackView。Equal Spacing -> UIStackViewDistributionEqualSpacing填充整个UIStackView,子视图没有占满UIStackView将会用空白平均填充子视图中间的间距,超出UIStackView将会根据arrangedSubviews数组下标压缩子视图。Equal Centering -> UIStackViewDistributionEqualCentering平均分配子视图得到每个视图的中心点,使用这个中心点来布局每个子视图,并且保持spacing距离,超出将会重新布局子视图,并压缩部分子视图。

3.视图填充样式

stackView.alignment = .Fill/****************/Fill -> UIStackViewAlignmentFill视图纵向填充Top -> UIStackViewAlignmentTop视图向上对其(适用于Horizontal模式)Center -> UIStackViewAlignmentCenter视图居中对其Bottom -> UIStackViewAlignmentBottom视图向下对其(适用于Horizontal模式)First Baseline -> UIStackViewAlignmentFirstBaseline根据上方基线布局所有子视图的y值(适用于Horizontal模式)Last Baseline -> UIStackViewAlignmentLastBaseline根据下方基线布局所有子视图的y值(适用于Horizontal模式)trailing -> UIStackViewAlignmentTrailing视图向左对齐(适用于Vertical模式)leading -> UIStackViewAlignmentLeading视图向右对齐(适用于Vertical模式)

4.子控件之间最小距离

stackView.spacing = 0/****************/spacing -> CGFloat spacing

5.基线相对布局

public var baselineRelativeArrangement: Bool

如果YES,则从顶视图的最后基线到底视图的顶部测量两个视图之间的垂直间距。

6.边界相对布局

public var layoutMarginsRelativeArrangement: Bool

决定了 stack 视图平铺其管理的视图时是否要参照它的布局边距,选中 Layout Margins Relative 将相对于标准边界空白来调整subview位置

Xib创建

  • 择UIStackView控件直接拖到XIB中。可以选择Horizontal和Vertical两个方向的UIStackView,也可以在拖到XIB中之后手动修改。
  • 父视图可以将UIStackView作为子视图来进行多层UIStackView嵌套,这也是苹果推荐的做法。

示例图片1.png
  • 打开右侧设置面板来设置UIStackView的一些对应属性,达到更好的布局效果。

示例图片2.png
  • 除了上面的方法也可以在XIB中直接选择多个View,然后点击右下方的Stack按钮,系统会自动推断布局方式,平均分配空间布局,帮我们自动布局子视图,我们可以在系统布局之后在手动进行调整。

示例图片3.png

作为一枚小菜鸟,不足之处还望大家多多指正,互相学起,共同进步!

这篇关于iOS9之UIStackView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/468577

相关文章

iOS9如何调用系统通讯录

找了半天iOS开发怎么调用系统的通讯录,全是AddressBook(iOS9之前用这个,可是现在写到程序里,全是警告)终于,功夫不负有心人,可算是找到了. // ①导入头文件 #import <Contacts/Contacts.h> #import <ContactsUI/ContactsUI.h> // ②遵守协议 ~~~~<CNContactPickerDelega

iOS开发者的福利 — — iOS9+Xcode7免越狱免证书直接调试

苹果发布Xcode7后, 开放了普通的AppleID也能真机调试( 非$99 或 $299, 只要能上AppStore下载应用的AppleID就行),下面教你具体做法,很简单的。   1.运行Xcode,Xcode打开后,点左上角菜单‘Xcode‘,选择‘Preferences‘。   2.在打开的窗口中,点‘Accounts‘,切换到账号页,然后点下面的‘+‘号,在弹出菜单中点击‘Ad

ios9键盘 level级别

如下图所示,当键盘已经弹起的时候,再显示我们自己写的确认窗口等window,会发现window被键盘挡住了。 这是因为iOS9下系统键盘的windowLevel是很高的,达到10^7。而且进一步发现,这个值是系统允许的最大值。如果把某个window的windowLevel改成比10^7大的值,系统只会设为10^7。 解决这个问题有两种方法: 一个是把我们自己window的lev

iOS9系统下使用UITextField的一个坑——内容从不可见到可见会多出一个空格

最近项目测试,在产品经理手机上发现一个问题——在UITextField输入密码后点击可见会发现光标往后移了一位即输入的内容多出一个空格。效果图如下: 然而我在自己测试过程中却没有发现这个问题,于是再次在我的测试机和模拟器上进行测试,在测试完所有模拟器和测试机后问题仍没有复现。于是想,可能是系统的问题,我的模拟器以及测试机都是iOS10.0的系统,而产品经理的手机系统是iOS9.2的,于是

iOS9使用提示框的正确实现方式

在从iOS8到iOS9的升级过程中,弹出提示框的方式有了很大的改变,在Xcode7 ,iOS9.0的SDK中,已经明确提示不再推荐使用UIAlertView,而只能使用UIAlertController,我们通过代码来演示一下。 我通过点击一个按钮,然后弹出提示框,代码示例如下: [objc]  view plain copy print ? #import "V

iOS9 WKWebView清除缓存方法

自iOS8以来新出的WKWebView,大大优化了UIWebView的内存飙升问题,使得开发者迫不及待的用它来替换掉UIWebView,iOS8刚出,作者我就赶紧把项目里的webView都替换成WKWebView了,然而....当我替换完后发现...我去!WKWebView并没有清除缓存的功能,即使使用了以下代码: NSHTTPCookie *cookie;NSHTTPCookieStor

iOS9---九阴真经

北京时间6月9日凌晨,苹果WWDC 2015在美国旧金山正式开幕,本届大会主题为“the epicenter of change”。在本届大会上,苹果发布了iOS 9、新一代OS X操作系统EI Capitan以及watchOS 2手表新系统。与此前版本相比,iOS 9更加智能化,同时也更加多面性。以下是苹果在本届开发者大会上发布的关于iOS 9的细节信息: Siri更智能更强大

iOS9开发之新增通知行为详解

苹果在 iOS8 发布时,收到短信时可以直接在通知栏输入文字并回复,非常炫酷,然而这一功能并未真正开放给开发者。 iOS9 新增了用户通知行为 UIUserNotificationActionBehaviorTextInput, 苹果终于将这一炫酷的功能开放给我们。 具体方式为 : 1.  设置通知行为: //1. 创建可变通知行为

iOS9企业部署分发问题深入了解与解决

1. iOS9以后,企业级分发ipa包将遭到与Mac上dmg安装包一样的待遇:默认不能安装,也不再出现“信任按钮”解决办法 2. iOS9以后,企业分发时可能存在:下载的ipa包与网页两者的 bundle ID 无法匹配而导致下载失败的情况  解决办法 ※本文主要针对问题二进行问题的深入了解与解决。 我们都知道iOS8企业分发有个bug,就是当因为某种原因更改manifest文件(pli

IOS9 xcode7 You must rebuild it with bitcode enabled

以前的项目 放到Xcode7中运行时可能会遇到以下错误:You must rebuild it with bitcode enabled (Xcodesetting ENABLE_BITCODE) 未来Watch应用须包含Bitcode,iOS不强制,但Xcode7默认会开启Bitcode。 如何适配? 方法一:更新library使包含Bitcode,否则会出现以下中的警告;