这个两个东西是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详解的更多相关文章

  1. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  2. 原生JS:String对象详解

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  3. fullPage教程 -- 整屏滚动效果插件 fullpage详解

    1.引用文件 [html] view plain copy print?在CODE上查看代码片派生到我的代码片 <link rel="stylesheet" href=&qu ...

  4. 第三十一节,目标检测算法之 Faster R-CNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  5. JS组件系列——JsPlumb制作流程图及相关效果详解

    上    篇 前言:之前项目里面用到了Web里面的拖拽流程图的技术JsPlumb,其实真不算难,不过项目里面用HTML做的一些类似flash的效果,感觉还不错,在此分享下. Jsplumb官网:htt ...

  6. [转]CNN目标检测(一):Faster RCNN详解

    https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgi ...

  7. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  8. 转载:Faster-RCNN详解

    原文:http://blog.csdn.net/zy1034092330/article/details/62044941 原文大神有很多经典之作,并且讲解得很透彻,建议前往,这里仅当学习使用. Fa ...

  9. java之Matcher类详解

    在JDK 1.4中,Java增加了对正则表达式的支持. java与正则相关的工具主要在java.util.regex包中:此包中主要有两个类:Pattern.Matcher. Matcher  声明: ...

随机推荐

  1. C# 实现线程的常用几种方式

    前言 在各个开发语言中,线程是避免不了的,或许通过表象看不出来,但是真的无处不在.就比如一个Web程序,平时或许只注重增删改查的开发,根本没有编写相关多线程的的代码,但是请求内部的时候,已经分配了对应 ...

  2. SAFe必备——提高团队敏捷性

    规模化敏捷之于项目群,就像Scrum之于敏捷团队.为了创建高质量业务解决方案,企业需要提高自身能力,提升团队和技术敏捷性,实现真正的规模化敏捷. 敏捷发布火车 实现团队和技术敏捷性,首先需要敏捷团队围 ...

  3. 【Python】利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来

    源代码: """ 利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来 string_reverse_output():反向输出字符串的自定义函数 pending ...

  4. 基于Qt实现的TCP端口数据转发服务器

    对于Qt,比较喜欢qt的sdk框架,我也是用于做一些工作中用到的工具软件,基于qt的sdk做起来也比较快: 一.概述 今天要说的这个tcp端口转发服务器,主要是用于将监听端口的数据转发到另外一个服务器 ...

  5. CentOS 7.0删除mysql服务

    今天在Centos下安装mysql服务,就小记下,前面收藏了一篇安装的文档,我测试是可以用的,现在测试一下怎么删除 删除有两种方法,一种通过rpm -e进行删除 另一种通过yum remove 一.r ...

  6. MySQL 连接查询汇总

    MYSQL-连接查询: # 连接查询:把多张表进行记录的连接(按照某个条件进行数据的拼接) # 分类 1,内链接 2,外连接 # 左外 # 右外 3,自然连接 4,交叉连接 MYSQL-内链接 : # ...

  7. C#LeetCode刷题之#122-买卖股票的最佳时机 II(Best Time to Buy and Sell Stock II)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4032 访问. 给定一个数组,它的第 i 个元素是一支给定股票第  ...

  8. 使用Tensorflow搭建自编码器(Autoencoder)

    自编码器是一种数据压缩算法,其中数据的压缩和解压缩函数是数据相关的.从样本中训练而来的.大部分自编码器中,压缩和解压缩的函数是通过神经网络实现的. 1. 使用卷积神经网络搭建自编码器 导入MNIST数 ...

  9. asp.net core跨平台--CentOS7.2部署asp.net core网站

    随着vs2015 2017的发布,.NETCore越来越流行了,我就尝试着做了个demo,在centos上试着运行了一下,中间遇到很多问题,不过最后还是成功运行,记录一下过程.废话不多说,直接开始: ...

  10. Core + Vue 后台管理基础框架9——统一日志

    1.背景 前阵子有园友留言,提到日志相关的东西,同时,最近圈子里也有提到日志这个东西.一个充分.集中的统一日志平台还是很有必要的,否则系统出问题了只能靠猜或者干瞪眼.何谓充分,日志记录满足最低要求.出 ...