Anchors Piovt详解
这个两个东西是RectTransform里面的两个属性,也是UGUI做UI自适应的重要工具,之前做的的时候,都只是调出效果即可,并没有深究其中的原理,现在决定来补上这个漏洞。
首选我们来看看Anchors的行为是怎么来控制的。
1.在Inspector面板中,控制Anchors的位置的值有四个,如图:


而Anchor是有四瓣,根据实验结果,
Xmin 控制 点1、 2的x轴的位置 Xmax控制 点3、 4的x轴的位置
Ymin控制 点1、 3的Y轴的位置 Ymax控制 点2、 4的Y轴的位置
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在Inspector面板中,根据Anchors的值的不同,RectTransform会表现出不同的值,我们现在具体讨论这些情况。
1. 当Anchors的四个点重合时。(也就是 Xmin =Xmax,Ymin =Ymax)
a.子物体相对于父物体的位置,对应在inspector面板中的值如下2图:


通过上图可以看到,子物体的位置其实是由子物体的Pivot位置相较于Anchors点的偏移量确定的。该图中的PosX = 322,PosY = -170,刚好与左图中虚线的偏移量一致。
b.在父物体变换形状时,子物体的形状变化,通过下面的动图可以清晰的明白原理(拿来主义了一波):
可以看到,其实子物体形状缩放,其实是子物体的四个顶点的距离Anchor 点的四个点的间距比例保持一致。也就是说,
如果Anchor的四个点重合在一起,那么无论父物体形状如何形变,子物体的形状都不会被变形拉伸,并且会保持与Anchor点的偏移量不变。


2. 当Anchors的四个点不重合时:
2.1当Xmin !=Xmax ,Ymin =Ymax,也就是左右分开时:


可以看到,inspector面板中的参数已经变了,它们具体的含义如上左图:
Left:子物体左边 距 左Anchor点 的偏移量 Right:子物体右边 距 右Anchor点 的偏移量
Pos Y:子物体Pivot点 距离 Anchor点 的 Y轴 偏移量。 Height : 子物体的高度值。
处于这种情况时:
1.子物体的 位置 永远 与 Anchor的位置保 持一定距离 不变。
2.子物体的 高度 不会被拉伸。
3.子物体的 宽度 会随着父物体的宽度拉伸而拉伸。
动图如下:


2.2当Ymin !=Ymax,Xmin =Xmax,也就是上下分开时:
这个时候的情况与2.1的情况类似,只不过是由左右变为了上下而已,具体参数如下:


同样的,在这种情况下,
1.子物体的 位置 永远 与 Anchor的位置保 持一定距离 不变。
2.子物体的 宽度 不会被拉伸。
3.子物体的 高度 会随着 父物体的高度 拉伸而拉伸。
2.3当Ymin !=Ymax,Xmin !=Xmax,也就是四个点全部分开时:


这个时候,参数变成了:
Left:子物体 左边 距离 左边 anchor点的距离 Right:子物体 右边 距离 右边anchor点的距离
Top:子物体 上边 距离 上边 anchor点的距离 Bottom:子物体 下边 距离 下边 anchor点的距离
这个时候,如果父物体发生了形变:
1.子物体的 pivot 位置 会与一个 虚拟的anchor点 的距离保持不变。
2.子物体宽度 会随父物体宽度变化而变化。
3. 子物体的高度 会随父物体高度变化而变化。
最后:
pivot 可以设置任意值,不过(0,0)为左下角点,(1,1)为右上角点
anchor的取值无论x,y,都是[0,1]。
Anchors Piovt详解的更多相关文章
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...
- 原生JS:String对象详解
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- fullPage教程 -- 整屏滚动效果插件 fullpage详解
1.引用文件 [html] view plain copy print?在CODE上查看代码片派生到我的代码片 <link rel="stylesheet" href=&qu ...
- 第三十一节,目标检测算法之 Faster R-CNN算法详解
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...
- JS组件系列——JsPlumb制作流程图及相关效果详解
上 篇 前言:之前项目里面用到了Web里面的拖拽流程图的技术JsPlumb,其实真不算难,不过项目里面用HTML做的一些类似flash的效果,感觉还不错,在此分享下. Jsplumb官网:htt ...
- [转]CNN目标检测(一):Faster RCNN详解
https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...
- 【目标检测】Faster RCNN算法详解
Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...
- 转载:Faster-RCNN详解
原文:http://blog.csdn.net/zy1034092330/article/details/62044941 原文大神有很多经典之作,并且讲解得很透彻,建议前往,这里仅当学习使用. Fa ...
- java之Matcher类详解
在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Matcher 声明: ...
随机推荐
- MySql大表分页(附独门秘技)
问题背景 MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高效地实现该需求? 注:本文并非主要讲解如何建立索引,以下的分析均建立在有合 ...
- html笔记 标签属性、图像和链接、超链接
HTML 标签属性: <b></b>:加粗 <i></i>:斜体 <u></u>:下划线 <s></s> ...
- 【API进阶之路】高考要考口语?我用多模态评测API做了一场10w+刷屏活动
摘要:闲着没事用多模态评测API做了一个测评英语口语的互动小游戏,居然成了一场10万人参与的刷屏级活动. 上一期故事说到,我成为了公司技术委员会副主席,上任后的第一件事是建立了一个云容器化的研发资料库 ...
- C#LeetCode刷题之#206-反转链表(Reverse Linked List)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3828 访问. 反转一个单链表. 输入: 1->2-> ...
- golang 工厂模式
目录 前言 1.介绍 2.分析 1.优点 2.缺点 3.模式扩展 4.适用环境 5.模式结构 类图 时序图 demo 跳转 前言 不做文字的搬运工,多做灵感性记录 这是平时学习总结的地方,用做知识库 ...
- 关于什么时候用,怎么用:ExecuteNonQuery(),还有其它返回值
ExecuteScalar方法返回的类型是object类型,这个方法返回sql语句执行后的第一行第一列的值,由于不知到sql语句到底是什么样的结构(有可能是int,有可能是char等等),所以Exec ...
- c# Attribute会不会影响性能
Attribute很方便,标记一个类,设置这个类的额外信息,而不用另外设计存储这个信息. 那么频繁大量使用Attribute会不会影响类的性能. 为此,简单测试. 代码: 略............. ...
- jQuery css()方法及方法
知识点一:jQuery css()方法 1.css()方法是什么? css()方法设置或返回被选元素的一个或多个样式属性. 2.返回CSS属性 1.$("p").css(" ...
- 实战分享丨MySQL 与Django版本匹配相关经验
摘要:关于MySQL 与Django版本匹配相关知识的经验分享. run: (env) E:\PythonPro\PyDjangoProDemo011\xuanyuaniotpro>python ...
- 【java】java获取JVM启动参数 System.getProperty
java获取JVM启动参数 System.getProperty取 -D后的key即可 public class Test { public static void main(String[] arg ...