首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS9新特性——堆叠视图UIStackView

二、在storyBoard上初识StackView         UIStackView是一个管理一组堆叠视图的控制器类视图,所谓堆叠视图时一种平铺式的线性布局方式,不可重叠,布局方向也不可交错,如果你做过...例如,我们如果需要一个如下效果的布局,在屏幕的中间摆放几个大小一致的色块,无论屏幕朝向如何,其位置都不会变化,并且可以向其中添加和移除色块的数量: ? ?...之后有一点需要注意,stackView用于布局其内部管理的视图,对于它本身,我们还需要添加一些约束,将它约束在屏幕的中间。...    UIStackViewDistributionFillEqually,     //会优先按照约束的尺寸进行排列,如果没有充满,会拉伸最后一个排列的控件充满     UIStackViewDistributionFillProportionally...一个StackView不允许我们进行水平和竖直的交叉布局,但是我们可以通过嵌套的方式来实现复杂的布局效果,比如我们实现一个类似电影表标签,可以使用水平布局的StackView中嵌套一个竖直布局的StackView

2K10

iOS AutoLayout全解

注意:我在添加约束的时候有个选项叫做updateFrame 如果勾选 会直接将Frame调整到真实值 ,而不需要再次update 。...StackView UIStackView是iOS9新引入的控件,它支持垂直和水平排列多个子视图(SubView)。...StackView属性 在理解StackView时,有几个属性需要理解: Axis: 这个属性是改变UIStackView中的排布方式的属性,其中有水平排布与垂直排布 Alignment:这个属性是其中子视图的位置摆布方式默认是填充摆布...Fill:子视图填充他所在的位置(默认) Leading:子视图头部对齐 Center:子视图居中对齐 Trailing:子视图尾部对齐 Distribution:子视图的大小 Fill:子视图填充整个...UIStackView Fill Equally:子视图填充空白区域并等分 Fill Proportionally:按照目前相对位置进行填充 Equal Spacing:等间距 Spacing设置子视图之间的间距大小

4.6K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flexbox布局杂谈

    甚至苹果官方在iOS9的时候推出的UIStackView,采用的也是FlexBox思路来实现布局的。...使用Flexbox布局的视图元素叫Flex容器(flex container),其子视图元素会自动成为容器成员,叫做Flex项目(flex item)。...项目默认是沿主轴排列的,单个项目占据的主轴空间叫做mainSize,占据的交叉轴空间叫做crossSize。...它和iOS中自带的UIStackView类似,布局思路参照了Flexbox,比如horizontalAlignment、alignItems、flexWrap等属性很容易和Flexbox对应上。...vStack;然后,为vStack设置两个子节点,第一个子节点是标题,第二个子节点是正文内容;接下来,创建一个横轴方向的ASStackLayoutSpec视图容器hstack,在hstack里添加imageNode

    2.2K30

    制作一个类似苹果VFL(Visual Format Language)的格式化语言来描述类似UIStackView那种布局思路,并解析生成页面

    既然UIStackView已经提供了一种既先进又简洁的布局思路,为何不通过制作一个类似VFL这样的DSL语言来处理布局。...AssembleView(组装视图)和PartView(零件视图) 在设计格式化语言之前需要对布局做个统一思想进行管理,在看了WWDC里关于UIStackView的介绍后感觉任何复杂的布局都能够通过这样一种组合排布再组合排布的思路特别适合用格式化语言来描述...,“[]”PartView会根据顺序依次添加排列,imageName属性能够指定本地图片 image.png { hc(padding:30) [(imageName:starmingicon...ignoreAlignment:设置忽略的约束方向,在父AssembleView不需要由子PartView决定大小的情况下,可以通过打断某个方向约束来实现拆开排列的效果。...也可以添加一个UIButton设置UIControlStateHighlighted时的样式。

    95020

    iOS多设备适配简史以及相应的API支撑实现

    在iOS9中还提供了一个UIStackView的类来简化那些视图需要从上往下或者从左往右依次添加排列的场景,通过UIStackView容器视图的使用就不再需要为每个子视图添加冗余的依赖约束关系了。...在大量的实践中很多应用的各板块其实都是按顺序从上到下排列或者从左到右排列的。所以如果您的应用最低支持到iOS9的话就可以大量的应用这个类来构建你的程序了。...,也可以将它添加进入视图中去,也可以将这个占位视图作为其他视图的约束依赖项,唯一的不同就是占位视图不会进行任何的渲染和绘制,它只会参与布局处理。...SizeClasses多屏幕适配 当我们的程序可能需要同时在横屏和竖屏下运行并且横屏和竖屏下的布局还不一致时,而且希望我们的应用在小屏幕上和大屏幕上(比如iPhone8 Plus 以及iPhoneX S...Max)的布局有差异时,我们可能需要用到苹果的SizeClasses技术。

    1.1K30

    用MyLayout实现布局性能的提升以及对阿拉伯国家的支持

    多说无益,图表最具说服力 下面的图表是在iPhone6真机设备上用MyLayout和frame以及AutoLayout进行构建和布局的时间对比表格,里面的数据是每个视图的构建时间和布局时间,单位都是毫秒...视图的构建和布局时间 构建时间 Frame MyLayout AutoLayout Masonry UIStackView TGLinearLayout 0.08 0.164 0.219 0.304 0.131...在布局时则因为都是使用了AutoLayout所以是相等的,大概花费0.255ms左右。...也就是界面中的元素总是按从右往左的方向进行排列布局,大部分国家的书写以及排列习惯都是从左往右,是LTR方向布局,而对于一些阿拉伯国家,文字的书写以及展示的顺序都是从右往左方向的,下面的两张图片展示了阿拉伯国家的界面展示效果...通过这个新定义的概念您就不需要担心在进行国际化布局时指定方向了。下面是MyLayout中对RTL支持的一些效果。 ?

    69460

    开源UI界面布局框架MyLayout1.9发布

    有些布局类则提供了通过子视图之间的约束限制来实现布局排列,比如浮动布局、相对布局、框架布局。有些布局类则需要通过多个层次嵌套来实现界面需求,比如线性布局、流式布局、表格布局、弹性布局。...UIView*))addTo; //添加子视图 -(id (^)(UIView*))add; /** 条目在弹盒中的排列顺序,值越大越往后排。...MyLayoutPos中的clone方法就是专门为最值约束使用的,主要为了解决那些获取最值时希望在某个位置的偏移的场景。 目前只有相对布局下的子视图才支持位置最值约束设置,其他布局下的子视图不支持。...3.视图尺寸和位置的压缩 在一些场景中我们希望当所有子视图的尺寸总和超过布局视图的尺寸时为了能让所有子视图都得到完全的显示而需要对子视图的尺寸进行适当的压缩,对于位置也是如此。...(如果用线性布局来实现多行多列则需要进行多个布局层次的嵌套处理)。

    1.8K10

    Android开发之LinearLayout布局详解

    使用LinearLayout可以十分轻松的布局出横向或者纵向线性堆叠界面,并且,嵌套使用LinearLayout也可以方便的布局出复杂的平面组合布局,通常情况下,ScrollView会与LinearLayout...在iOS9中推出的UIStackView、在watchOS开发中使用和核心布局模型Group与LinearLayout的思路十分一致,可见这种线性堆叠的布局方式在一定场景下十分有优势。        ...= 2; 在子视图之间显示分割线 public static final int SHOW_DIVIDER_END = 4; 在结束尾部显示分割线 */...void setVerticalGravity (int verticalGravity) //设置布局权重和 /* 当布局容器内子视图是通过权重来计算所占比例时 这个值表示权重总和 */ void...setWeightSum (float weightSum) //设置子视图的触摸事件是否延迟执行 /* 这个属性用于类型ScrollView,ListView可以滑动的视图中,避免手势冲突 */ boolean

    1.2K30

    【Android从零单排系列二十九】《Android布局介绍——LinerLayout》

    添加子视图元素: 在LinearLayout标签内部添加其他视图组件作为其子元素,例如TextView、Button等。根据需要可以使用不同的布局参数来控制子视图的大小和对齐方式。...设置布局属性: 可以通过在每个子视图的布局参数中设置不同的属性来控制子视图在LinearLayout中的位置和大小,例如android:layout_weight属性可以用来设置子视图的权重,实现按比例分配剩余空间...布局属性:通过在子视图的布局参数中设置不同的权重、对齐方式和填充方式,可以灵活控制每个子视图在LinearLayout中的位置和大小。...嵌套:可以嵌套多个LinearLayout以实现更复杂的布局结构。 大小测量:LinearLayout会根据子视图的测量要求和布局参数来计算自身的大小和子视图的位置。...在LinearLayout中添加子视图(如Button、TextView等)作为其子元素,并使用布局参数(layout_width和layout_height等)设置每个子视图的大小和对齐方式。

    26030

    Ios常用第三方框架(二)

    比如,之前要实现一个填写各种资料的列表,可能需要很多代码,现在只需要几行代码就可以实现。 UIScrollSlidingPages - 允许添加多视图控件,并且可以横向滚动。...HorizontalScrollCell - HorizontalScrollCell是一款使用方便的水平方向可滚动的单元格,适用于UICollectionView中实现水片方向滚动视图。 。...该项目通过三种形式展示页面之间的切换,比如导航栏上的多个tab切换、页面左右两端箭头指示切换,以及使用分段控件。...FDStackView - 可以将 UIStackView 的最低支持版本拉低到 iOS6,无需配置,没有代码侵染,扔到工程里后直接用系统 UIStackView 的 API 即可,同时兼容 Storyboard...MGSwipeTableCell - 另一个常见于很多应用中的UI组件,苹果应该考虑在标准的iOS SDK中加入一些类似的内容。Swipeable表格cell是这个pod的最佳描述,也是最好的。

    7.7K60

    IOS 生态如何做多端适配

    在 IOS 中写页面有两种方式,一种通过 code,直接在对应 viewController 中描述对应元素的特性即可(这种方式在大型项目中用的很多;另外一种是直接利用 storyboard,通过 UI...其中在布局上比较重要的是 IOS 中的 constraint 概念,通过限制一个 view 在上下左右的位置 和 自身尺寸大小就可以实现布局定位的效果。...StackView,有点类似 CSS 中的 flex 布局属性,你可以很容易构建一个水平或者垂直的流式布局。...它最大的一个特点是会自动为里面的 UIView 构建布局约束。 ? UIStackView 拥有三个规则 分布方向、对齐规则、分布规则,优先指定 axis 属性,来定义布局轴的方向。...Horizontal 分屏当 iPad 处于横屏时,整体的宽度被拉长了,所以分屏的选择性就多了一个 等分, 1:1。现在 iPad 在横屏下的分屏就有 1:2 和 1:1 两种排列。

    1.8K10

    WWDC2016 Session笔记 - Xcode 8 Auto Layout新特性

    生成对应的constraints是发生在运行时,而不是编译时的原因是可以给我们开发者更加便利的方式为View添加更加细致的约束。...这时候我们选用NS/UIStackView来实现,因为它有以下的优点,它可以排列一组items,重要的是它可以处理好content size并且可以控制好每个item之间的spacing。...仅仅只需要我们把content放进预先定义好的网格中即可,NSGridView会帮我们管理好接下来对齐的一切事情。 我们来看看下面的例子。...根据设计,我们应该让label居右排列。这件事很容易,只要我们调整一下cell的位置信息即可完成。排列的位置信息会影响到cell,行,列,网格视图。...并且信息会显示在logs中。

    70530

    深入剖析Auto Layout,分析iOS各版本新增特性

    这里要注意重写layoutSubviews()或者执行类似layoutIfNeeded这样可能会立刻唤起layoutSubviews()的方法,如果要这样做需要注意手动处理的这个地方自己的子视图布局的树状关系是否合理...生命周期中需要注意的事项 不要期望frame会立刻变化。 在重写layoutSubviews()时需要非常小心。...还有种情况就是两个冲突的约束的权重是一样的就会崩。 Logical Errors:布局中的逻辑错误。 不含视图项的约束不合法,每个约束至少需要引用一个视图,不然会崩。在删除视图时一定要注意。...:NO时会严格按照约束->Engine->显示这种流程,如在Deferred Layout Pass之前设置好是没有问题的,之后强制执行LayoutSubview会产生一个权重和先前一样的约束在类似动画...案例二 将多个有相互约束关系视图removeFromSuperView后更新布局在低配机器上出现崩的问题。这个原因主要是根据不含视图项的约束不合法这个原则来的,同时会抛出野指针的错误。

    1.3K10

    iOS下的界面布局利器-MyLayout布局框架

    线性布局是一种里面的子视图按添加的顺序从上到下或者从左到右依次排列的单列(单行)布局视图,因此里面的子视图是通过添加的顺序建立约束和依赖关系的。...表格布局是一种里面的子视图可以像表格一样多行多列排列的布局视图。子视图添加到表格布局视图前必须先要建立并添加行视图,然后再将子视图添加到行视图里面。...如果行视图在表格布局里面是从上到下排列的则表格布局为垂直表格布局,垂直表格布局里面的子视图在行视图里面是从左到右排列的;如果行视图在表格布局里面是从左到右排列的则表格布局为水平表格布局,水平表格布局里面的子视图在行视图里面是从上到下排列的...流式布局是一种里面的子视图按照添加的顺序依次排列,当遇到某种约束限制后会另起一行再重新排列的多行展示的布局视图。...流式布局主要应用于那些子视图有规律排列的场景,在某种程度上可以作为UICollectionView的替代品。

    1.9K30

    iOS界面布局的核心以及TangramKit介绍

    表格布局TGTableLayout:表格布局里面的子视图可以进行多行多列的排列。在使用时要先添加行,然后再在行里面添加列,每行的列数可以随意确定。...那么我们就必须要提供另外一套子视图的布局尺寸和布局位置的设置方法,以便在布局视图布局时将子视图设置好的布局尺寸和布局位置转化为真实的视图尺寸和视图位置。...当我们在设置子视图的布局位置和布局尺寸时,系统内部会在设置完成后调用布局视图的setNeedLayout的方法,因此只要对子视图的布局位置和布局尺寸进行设置都会重新激发布局视图的布局视图。...上面曾经说过,在布局视图重新布局子视图时最终会调整子视图的bounds和center.那么这样就有可能会形成循环的重新布局,为了解决这种循环递归的情况,布局视图在layoutSubviews调用进行布局前设置了一个布局中的标志...因此当我们布局视图通过KVO监控到子视图的位置和尺寸变化时,则会判断那个布局中的标志,如果当前是在布局中则不会再次激发布局视图的重新布局,从而防止了死循环的发生。

    2.2K30

    iOS开发常用之网络

    其他UI AwesomeMenu - 最多人用的路径菜单。 DCPathButton - Path,4.0的弹出菜单,呼出或者关闭菜单时,多个小图标会分别按照逆时针和顺时针的方向进行滚动。...HUMSlider - HUMSlider是一款能够自动显示刻度记号的滑杆,滑动到某处,该处的刻度会自动上升,两边还能配置图像。支持代码或storyboard中实现。...Context-Menu.iOS - 可以为应用程序的菜单添加漂亮的动画内容,可自定义图标,并可根据自己的喜好设计单元格和布局。...KYAnimatedPageControl - 除了滚动视图时PageControl会以动画的形式一起移动,点击目标页还可快速定位。支持两种样式:粘性小球和旋转方块。...DisplaySwitcher.swift - 两个集合视图在不同布局(平摊和列表)间平滑切换.Yalantis出品。

    23.7K10

    UITableView在Flutter中是什么?

    那么,当这些基本元素的排列布局超过屏幕显示尺寸(即超过一屏)时,我们就需要引入列表控件来展示视图的完整内容,并根据元素的多少进行自适应滚动展示。...ListView 在Flutter中,ListView可以沿一个方向(垂直或者水平方向)来排列其所有子Widget,因此常被用于需要展示一组连续视图元素的场景,比如通讯录、优惠券、商家列表等。...因此,在ListView中,指定itemExtent比让子Widget自己决定自身高度会更有效。 运行这个示例,效果如下: ? 可能你已经发现了,我们的列表还缺少分割线。...但是,对于某些特殊交互场景,比如多个效果联动、嵌套滚动、精细滑动、视图跟随手势操作等,还需要嵌套多个ListView来实现。...这时,各自视图的滚动和布局模型就是相互独立、分离的,就很难保证整个页面统一一致的滑动效果。 那么,Flutter是如何解决多ListView嵌套时,页面滑动效果不一致的问题的呢?

    5.6K10

    【建议收藏】17个XML布局小技巧

    嵌套然后设置子view的weight,虽然嵌套一层不多,但那也是嵌套,就像怀孕一样,你不能说只怀了一点点… 第二个红框里是垂直参考线,距离左边30dp,这种情况适合多个子view向一个目标距离对齐,同样减少了层级嵌套问题...当我们把子layout抽出去之后,它的布局是相对独立的效果,但是总归要include到根布局的,如果能在子layout布局的时候看到它在父layout里面的效果,那就事半功倍了。...,当子layout嵌入在父layout中时,只需要使用tools:showIn在子layout的根布局指定父layout,就可以实时预览在父layout中的效果了。...条件视图的场景比如,当我们需要根据条件判断来显示哪个view的时候,一般都会把每个场景的view都写在页面中,然后根据条件分别设置view的visibility,这样做的缺点是,即使view是View.GONE...android:animateLayoutChanges animateLayoutChanges属性是ViewGroup里面的,主要是在子view的添加和移除时,添加一个默认300ms的渐变动画。

    91910

    Flutter 视图布局-前言

    01 - 视图的布局方式 简单说一下我对 Flutter 视图布局的看法,在前篇中我有提到 Flutter 是使用了 Dart 语言进行编写,所以弱化了视图编辑的部分,视图的渲染、结构、布局都通过代码逻辑来生成...在一定程度上在视图结构和逻辑的关联性是强了,但在直观布局结构方面却弱了,所以就导致在代码中会发现嵌套层次很多很深,同事也会对开发者的能力有了一些要求,当然如果有面向对象编程的经验的话,那么就上手来说问题并不大...视图布局》系列文章中我将 widget 下的第一级 widget 称之为 “子元素” 以便让少侠们理解。...多子类元素布局 多子类元素布局的 Widget 有10种: Row 在水平方向上排列子元素的列表。 Column 在垂直方向上排列子元素的列表。...IndexedStack 从一个子元素列表中显示单个子元素的 Stack。 CustomMultiChildLayout 使用一个委托来对多个子元素进行设置大小和定位的小部件。

    2.3K110
    领券