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

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

提出了布局容器概念,也就是有专门职责布局容器视图来管理排列里面的视图根据实际中应用场景而把这些负责布局容器视图分类抽象出了线性布局、相对布局、框架布局、表格布局、绝对布局这5大容器布局,...比如说有AB两个视图,我们定义A视图宽度B视图宽度相等,而A视图高度则是B视图高度一半。...在相对值类型尺寸中, 视图某个维度尺寸所依赖另外一个视图可以是兄弟视图,也可以是视图,也可以是视图,甚至可以是自身其他维度。...视图A左边距占用父视图宽度20%,而右边距则占用父视图宽度30%,高度则等于自身宽度视图B左边距是40,宽度则占用父视图剩余宽度高度是40。...视图C宽度占用父视图所有宽度高度是40。 视图D右边距是20,宽度是父视图宽度50%,高度是40。

2.1K30

用AutoLayout实现分页滚动

容器视图添加N个页视图,对于水平分页滚动来说容器视图高度滚动视图一样,而宽度则是滚动视图宽度乘以页视图数量,页视图尺寸则滚动视图保持一致,对于垂直分页滚动来说容器视图宽度滚动视图一样,而高度则是滚动视图高度乘以页视图数量...containerView.gravity = MyGravity_Vert_Fill | MyGravity_Horz_Fill; //设置线性布局中所有视图均分填充线性布局高度宽度。...addSubview:pageView]; //因为线性布局通过属性gravity设置就可以确定子页视图高度宽度,再加上线性布局特性,所以页视图不需要设置任何附加约束...containerView.wrapContentWidth = YES; //设置布局视图宽度视图包裹,当垂直流式布局这个属性设置为YES,并和pagedCount搭配使用会产生分页从左到右滚动效果...containerView.myVertMargin = 0; //容器视图高度滚动视图保持一致。

1.9K40
您找到你想要的搜索结果了吗?
是的
没有找到

MyLayout&TangramKit 重大升级!

AutoLayout尺寸自适应 AutoLayout中有两种类型尺寸自适应:一类是以UILabelUITextView为代表视图尺寸自适应,这类视图宽度高度有时候需要根据自身内容来确定自己宽度高度...另外一类是一些容器视图高度或者宽度希望根据其中视图来确定。...比如一些界面中有父视图尺寸由视图尺寸来确定;还比如UIScrollView中为了能实现滚动需要根据添加到里面的视图调整contentSize尺寸;又比如某些UITableViewCell中高度是动态...要求S高度宽度根据三个视图高度宽度自适应,那么只需要将布局视图S约束设置为如下: //OC版本 S.wrapContentSize = YES; //Swift版本 S.tg_size(width...A视图是一个MyLayout&TangramKit布局视图,其宽度等于父视图S宽度,而高度根据布局视图里面的视图高度自适应,而B视图则在A视图下方,并且宽度等于A视图

2K20

iOS layout相关方法

the autoresizing behaviors of the subviews do not offer the behavior you want.layoutSubviews 当我们在某个类内部调整视图位置时...假设有个UILabel 添加距离左边距离约束为leftconstraint 值为 10 现在我们想让距左边距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...)"); label.sizeToFit(); print("实际宽度:\(label.frame.size.width) 实际高度:\(label.frame.size.height)"); 打印结果为...宽度:120.0 高度:24.0 实际宽度:50.0 实际高度:50.0 实际宽度:120.0 实际高度:24.0 有上面的例子可以看出 sizeThatFits 返回“最佳”大小以适应给定大小...不实际调整视图。 sizeToFit 会根据sizeThatFits返回最佳大小进行调整视图

1K10

深入详解iOS适配技术

周围四条虚线分别代表控件距离父控件上、下、左、右之间距离关系/或者叫约束关系,周围四条虚线所包围小方块代表视图,小方块内部两条带双向箭头线分别代表控件宽度高度。...当我们点击周围四条虚线时,虚线会变成实线,代表控件父控件在这个方向上间距被固定了。当我们点击视图内部虚线时,同样也变为实线,代表视图宽度或者高度被固定了。...如果UIView设置了autoresizesSubviews,那么他控件bounds如果发生了变化,他控件将会根据控件自己autoresizingMask属性值来进行调整。...比如,给某个子控件A设置了左边距右边距后,虽然没有明确指定子控件A宽度,但是其左右边距一旦设置,那么宽度可以根据控件A父控件左右之间边距自动推算出来。...原因在于,UILabel是根据内容自动调整宽度高度,如果没有内容,那么宽度高度就是0,导致UILabel无法显示。

8.4K70

iOS界面布局之一——使用autoresizing进行动态布局

iOS界面布局之一——使用autoresizing进行动态布局 autoresizing是iOS中传统界面自动布局方式,通过,当父视图frame变换时,视图会自动做出相应调整。...可以看出,这时视图高度是随父视图变化而自动改变。...这时视图左边是随父视图变化而可变。 同理,UIViewAutoresizingFlexibleRightMargin将使视图右边与父视图距离可变。...UIViewAutoresizingFlexibleTopMargin将使视图上边与父视图距离可变。UIViewAutoresizingFlexibleWidth将使视图宽度可变。...如果你觉得autoresizing很强大,那么你就太容易满足了,autoresizing可以满足大部分简单自动布局需求,可是它有一个致命缺陷,只能设置视图相对于父视图变化,却不能精确这个变化度是多少

64720

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

并提供了视图隐藏显示时会自动激发布局、布局视图高度自适应(UITableviewCell动态高度)、标签云实现、左右内容宽度自适应、按比例分配尺寸间距、整体停靠控制等等各种强大功能。...应用场景 举例下面一个应用场景: 有一个容器视图S宽度是100而高度则是由四个从上到下依次排列视图A,B,C,D高度总和。...视图A左边距占用父视图宽度20%,而右边距则占用父视图宽度30%,高度则等于自身宽度视图B左边距是40,宽度则占用父视图剩余宽度高度是40。...视图C宽度占用父视图所有宽度高度是40。 视图D右边距是20,宽度是父视图宽度50%,高度是40。 最终效果图如下: !...您可以用其中equalTo方法来设置视图宽度高度

1.9K30

【IOS开发基础系列】Autolayout自动布局专题

1 简介         bounds是指这个view在它自己坐标系坐标大小 而frame指的是这个view在superview坐标系坐标大小区别主要在坐标系这一块。...虚线方块是根据自动布局显示视图frame。实线方块是根据你在屏幕上放置视图frame。这两个应该吻合,但是这里并没有。 Note:你可能会奇怪,为什么Xcode不为X轴方向自动增加一个约束。...H:  :表示水平         >= :表示视图间距、宽度高度必须大于或等于某个值         <= :表示视图间距、宽度高度必须小宇或等于某个值         == :表示视图间距、宽度或者高度必须等于某个值...//设置视图宽度视图宽度相同 [self.view addConstraint: [NSLayoutConstraint constraintWithItem: v1 attribute:...NSLayoutRelationEqual toItem: self.view attribute: NSLayoutAttributeWidth multiplier: 1.0 constant:0]];  //设置视图高度是父视图高度一半

28440

浅汇-iOS UI布局

使用了这么久,       对于父试图是  Button / UITextFeild等非UIView直接子类,布局其视图时,这里面的约束是不生效。...主要功能是: 1、实现Label高度固定,宽度自适应(超出后不显示),宽度固定,高度自适应。...2、实现了UIView内子视图自动布局; 3、实现了UIScrollView内容高度根据内部视图内容高度动态设置; 4、实现了一个UITableView有多个不同Cell时候,所有cell高度自适应.../** 设置单行文本label宽度自适应,超出了这个最大宽度则不显示,否则会根据文字多少自动调整宽度 */  - (void)setSingleLineAutoResizeWithMaxWidth:(...实现了UIScrollView可滚动高度根据内部视图内容高度动态设置 /** 设置scrollview内容自适应,第一个参数为作为底部视图,第二个参数为到sc底部间距。

2.1K20

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

:提供视图位置通过数学函数运算而进行定位排列能力 独有 SizeClass 提供了根据屏幕尺寸横竖屏而进行差异布局设置能力。...设想一个场景:某个视图宽度在竖屏下是屏幕宽度一半,而在横屏下则是屏幕高度一半。换句话说就是视图宽度是屏幕宽度高度最小值一半。 ?...5.布局中子视图拖放 在一些应用中我们可以通过拖放功能来调整视图位置或者进行一些其他处理。MyLayout以前版本中实现了这么一个DEMO。...MyLayout中如果我们调整视图约束后希望有动画效果,那么可以调用布局视图方法: /** *设置布局时动画。...10.完善扩充视图尺寸自适应设置支持 所谓尺寸自适应就是视图尺寸根据自身内容视图视图尺寸来动态确定自身尺寸,从而形成所谓包裹效果。

1.7K10

iOS-屏幕适配实现(Autoresizing)

6条线,上下左右以及空间内两条红色交叉线如下图 上下左右四条红色线分别表示此视图距离父视图上下左右边约束各式多少 中间两条上下交叉线表示,此视图高度宽度是否随着父视图变化而按比例变化...Autoresizing 举个例子: 当我们将左边上面虚线变成实线时,代表控件父控件在这个方向上间距被固定 当我们点击视图内部虚线时,同样也变为实线,代表视图宽度或者高度被固定了...@property(nonatomic) UIViewAutoresizing autoresizingMask; //是一个枚举值,作用是自动调整控件与父控件中间margin(间距)或者控件宽高...同理, 如果垂直方向同时固定了上边距下边距,那么我们不能固定子控件高度(反应在storyBoard中设置,也就是必须使控制控件高度虚线变为实线) Autoresizing缺点 Autoresizing...可以满足大部分简单自动布局需求,可是它有一个致命缺陷,只能设置视图相对于父视图变化,却不能精确这个变化度是多少,因此对于复杂精准布局需求,它就力不从心了

21010

如何手动实现一个 UIScrollView

image.png 注意: 这个逻辑坐标系并不关注包含在其中 View 宽度高度,整个坐标系没有边界向四周无限延伸。 我们在坐标系中放置四个 View,每一次色块代表一个 View: ?...文档中是这样描述 bounds 属性: bounds矩形…描述了该视图在其自身坐标系中位置大小。...调整 View Bounds 属性就相当于拖动这个幕布,那么下方内容就能在我们 View 中被观察到: ?...其实这就是 UIScrollView 滑动时所发生事情。注意从一个用户角度来看,他以为时这个 View 中 View 在移动,其实他们在坐标系中位置(他们 frame )没有发生过变化。...我们用一个 gesture recognizer 来识别用户拖动操作,根据用户拖动偏移量来改变 bounds 原点: 真正 UIScrollView 一样,我们类也有一个 contentSize

67840

iOS学习——UIView研究

2个 属性 8个 UIView各类扩展 视图几何相关扩展 UIView (UIViewGeometry),主要定义了视图上位置区域相关一些属性方法 视图层次结构相关扩展 UIView (UIViewHierarchy...),主要定义对子视图增删改以及层次结构调整等操作 视图外观渲染相关扩展 UIView (UIViewRendering),主要定义视图一些属性设置,例如是否隐藏、透明度、背景颜色等 视图动画相关扩展...< 自动调整自己宽度,保证与superView左边右边距离不变. 53 UIViewAutoresizingFlexibleRightMargin = 1 << 2,//!...< 自动调整自己高度,保证与superView顶部底部距离不变. 56 UIViewAutoresizingFlexibleBottomMargin = 1 << 5 //!...则会根据autoresizingMask属性自动调整视图尺寸 */ 223 @property(nonatomic) BOOL autoresizesSubviews; 224

2.7K80

View编程指南(三)

contentModecontentStretch属性确定在view宽度高度更改时如何处理内容。 contentScaleFactor属性仅在需要为高分辨率屏幕自定义view绘制行为时使用。...缩放view会更改view宽度高度,但不会更改其center. View Hierarchy中转换坐标 在许多情况下,特别是在处理事件时,应用程序可能需要将坐标值从一个参照系转换为另一个参照系。...通过自动布局,您可以设置每个view在其父view调整大小时应遵循规则,然后完全忽略调整大小操作。 通过手动布局,您可以根据需要手动调整view大小位置。...如果此属性设置为YES,则该view使用每个子viewautoresizingMask属性来确定如何调整定位该view。对任何view大小更改会触发嵌入式子view类似布局调整。...上图中灵活宽度高度常数与“AutoSizing”控件图中宽度大小指示器具有相同行为。 但是,保证行为使用是有效逆转。

1.7K30

在Swift中创建可缩放图像视图

我们将用一个UIImageView来初始化这个类,它将被添加为一个视图。...medium.com/media/afad3… 在commonInit()中,我们将图像视图居中,并设置高度宽度,而不是把固定在父视图上。这样一来,滚动视图就会从图像视图中获得其内容大小。...设置滚动视图 我们需要实际设置我们滚动视图,使其可缩放可平移。这包括设置最小最大缩放级别,以及指定用户放大时使用UIView(在我们例子中,它将是图像视图)。...试试平移缩放(如果你使用是模拟器,按住 "option "键)--你会对你图像有一个全新视角 以编程方式初始化视图 在使用界面生成器时,这很好--但如果你想以编程方式初始化视图呢?...这也不仅仅适用于图片视图--如果你想让UIView可缩放,你可以采取同样方法,用UIView而不是图片名称初始化你类。可以尝试一下!

5.6K20

WWDC - SwiftUI - 初恋般感觉

第一个结构符合视图协议,描述了视图内容布局。 第二个结构声明了该视图预览。...Modifiers可以修改视图属性,并且modifier返回一个新视图,所以通常会将多个modifiers像链一样垂直堆叠在一起。( 链式编程)。...第六步 注意一点就是,Xcode会根据inspector修改自动更新你代码。 利用Stacks组合视图 我们创建了一个文本框用来显示landmark详情信息,并且把这个文本控件放到头部。...我们已经把park名称位置视图做好了,接下来我们将给park添加个图片。...设置MapViewframe。 如果你只设置了Mapview高度,那么MapView会自动设置其宽度来适应父视图。所以MapView会充满宽度区域。

3.8K10

CALayer 图层概念二、CALayer属性二、方法

CALayer负责视图中显示内容动画.所有动画都是作用在CALayer上....如 : bounds : 用于设置CALayer宽度高度,修改这个属性会产生缩放动画. background : 用户设置CALayer背景色, 修改这个属性会产生背景色渐变动画. position...属性 设置图层尺寸,高度宽度 @property CGRect bounds; 设置位置 方式1: 用来设置CALayer在父层中位置,position相当于UIView控件center属性...此处可以UIViewclipToBounds来比较记忆(clipToBounds为yes会使其上内容包括视图不能超出边界) 控件截图裁剪三种方法: 给layer设置圆角半径layer.cornerRadius...)bounds : 用于设置CALayer宽度高度,修改这个属性会产生缩放动画

1.4K70

UIview

布局视图管理 一个视图可以包含零个或更多视图。 每个视图定义了自己默认调整行为与它视图。 一个视图可以定义子视图大小位置。...这将创建一个视图之间亲子关系被嵌入(称为视图)嵌入视图(称为父视图)。通常情况下,视图可见区域范围不剪视图,但在iOS可以使用clipsToBounds属性来改变行为。...父视图可以包含任意数量视图但每个子视图只有一个父视图,负责适当定位视图。 一个视图几何定义框架,边界中心属性。...框架定义了视图起源维度坐标系统中常用它视图布局调整视图大小或位置。中心属性可以用来调整视图位置不改变大小。边界定义视图,把他们内部维度几乎完全用于自定义代码。...尺寸部分框架边界矩形耦合在一起,因此改变大小矩形更新大小。如何使用UIView详细信息,看到视图iOS编程指南。

69110

iOS OC swift 自定义 popover 泡泡

棕色区域是可以设置 红色 底层箭头视图边框 白色 底层箭头视图背景颜色 蓝色 自定义内容区域,在此区域(contentView)可以添加希望展示内容 加号按钮 模拟了 sourceView...可以看到当 sourceView(加号按钮) 在不同地方时候,popover 自动更改方向、调整箭头方向、位置以适应不同 sourceView 类说明 open class KKPopover: UIView...contentView: UIView /// 自定义内容请在此视图上增加 arrowView: KKPopoverArrowView 箭头视图 delegate: KKPopoverDelegate..., sourceView: UIView) /// 根据 sourceView 展示在指定视图中 /// - Parameters: /// - view: 添加到视图,不传则添加到 window...内部合适方向使用 open class KKPopoverArrowView: UIView 箭头视图配置项 /// 边角弧度 open var borderRadius: CGFloat

2.6K70
领券