position和anchorPoint

position和anchorPoint本人录制技术视频地址:https://edu.csdn.net/lecturer/1899 欢迎观看。一、理论概述1.简单介绍CALayer有2个非常重要的属性:position和anchorPoint@propertyCGPointposition;用来设置CALayer在父层中的位置以父层的左上角为原点(0,0) @propertyCGPointanchorPoint;称为“定位点”…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
本人录制技术视频地址:
https://edu.csdn.net/lecturer/1899 欢迎观看。

一、理论概述

1.简单介绍

CALayer有2个非常重要的属性:position和anchorPoint

@property CGPoint position;

用来设置CALayer在父层中的位置

以父层的左上角为原点(0, 0)

 

@property CGPoint anchorPoint;

称为“定位点”、“锚点”

决定着CALayer身上的哪个点会在position属性所指的位置

以自己的左上角为原点(0, 0)

它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

2.图示

anchorPoint

它的取值为0~1

position和anchorPoint

 

红色图层的anchorPoint为(0,0)

position和anchorPoint

红色图层的anchorPoint为(0.5,0.5)

position和anchorPoint

红色图层的anchorPoint为(1,1)

position和anchorPoint

红色图层的anchorPoint为(0.5,0)

position和anchorPoint

position和anchorPoint

添加一个红色图层到绿色图层上,红色图层显示到什么位置,由position属性决定

假设红色图层的position是(100,100)

  到底把红色图层的哪个点移动到(100,100)的坐标位置,锚点。

  红色图层的锚点是(0,0)

position和anchorPoint

红色图层的锚点是(0.5,0.5)

position和anchorPoint

红色图层的锚点是(1,1)

position和anchorPoint

红色图层的锚点是(0.5,0)

position和anchorPoint

3.代码示例

(1)没有设置锚点。默认的锚点位置为(0.5,0.5)

复制代码
 1 //
 2 //  YYViewController.m
 3 //  03-锚点等属性
 4 //
 5 //  Created by apple on 14-6-21.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 
13 @end
14 
15 @implementation YYViewController
16 
17 - (void)viewDidLoad
18 {
19     [super viewDidLoad];
20     //创建图层
21     CALayer *layer=[CALayer layer];
22     //设置图层的属性
23     layer.backgroundColor=[UIColor redColor].CGColor;
24     layer.bounds=CGRectMake(0, 0, 100, 100);
25     //添加图层
26     [self.view.layer addSublayer:layer];
27     
28 }
29 
30 @end
复制代码

显示效果:

position和anchorPoint         position和anchorPoint

(1)设置锚点位置为(0,0)

复制代码
 1 - (void)viewDidLoad
 2 {
 3     [super viewDidLoad];
 4     //创建图层
 5     CALayer *layer=[CALayer layer];
 6     //设置图层的属性
 7     layer.backgroundColor=[UIColor redColor].CGColor;
 8     layer.bounds=CGRectMake(0, 0, 100, 100);
 9     //设置锚点为(0,0)
10     layer.anchorPoint=CGPointZero;
11     //添加图层
12     [self.view.layer addSublayer:layer];
13 }
14 @end
复制代码

显示效果:

position和anchorPoint

二、隐式动画

1.简单说明

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

什么是隐式动画?

当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果

而这些属性称为Animatable Properties(可动画属性)

 

列举几个常见的Animatable Properties:

bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画

backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画

position:用于设置CALayer的位置。修改这个属性会产生平移动画

2.代码示例

复制代码
 1 //
 2 //  YYViewController.m
 3 //  04-隐式动画
 4 //
 5 //  Created by apple on 14-6-21.
 6 //  Copyright (c) 2014年 itcase. All rights reserved.
 7 //
 8 
 9 #import "YYViewController.h"
10 
11 @interface YYViewController ()
12 @property(nonatomic,strong)CALayer *layer;
13 @end
14 
15 @implementation YYViewController
16 
17 - (void)viewDidLoad
18 {
19     [super viewDidLoad];
20     //创建图层
21     CALayer *mylayer=[CALayer layer];
22     //设置图层属性
23     mylayer.backgroundColor=[UIColor brownColor].CGColor;
24     mylayer.bounds=CGRectMake(0, 0, 150, 100);
25     //显示位置
26     mylayer.position=CGPointMake(100, 100);
27     mylayer.anchorPoint=CGPointZero;
28     mylayer.cornerRadius=20;
29     //添加图层
30     [self.view.layer addSublayer:mylayer];
31     self.layer=mylayer;
32 }
33 
34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
35 {
36     //隐式动画
37     self.layer.bounds=CGRectMake(0, 0, 200, 60);
38     self.layer.backgroundColor=[UIColor yellowColor].CGColor;
39 }
40 @end
复制代码

效果:

position和anchorPoint        position和anchorPoint

关闭隐式动画:

1     [CATransaction begin];
2     [CATransaction setDisableActions:YES];
3     //隐式动画
4     self.layer.bounds=CGRectMake(0, 0, 200, 60);
5     self.layer.backgroundColor=[UIColor yellowColor].CGColor;
6     [CATransaction commit];

3.如何查看CALayer的某个属性是否支持隐式动画?

  可以查看头文件,看有没有Animatable,如果有则表示支持。

position和anchorPoint

也可以查看官方文档

position和anchorPoint

文档中标明的这些属性都是支持隐式动画的

position和anchorPoint


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184512.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jsonobject转string数组_json字符串转jsonobject对象

    jsonobject转string数组_json字符串转jsonobject对象首先在maven中添加阿里的fastjson依赖<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.68</version></dependency…

    2022年8月23日
    5
  • 中心极限与大数定理律的关系_大数定理的通俗理解(辛钦、伯努利、切比雪夫大数定理)…

    中心极限与大数定理律的关系_大数定理的通俗理解(辛钦、伯努利、切比雪夫大数定理)…大数定理简单来说 指得是某个随机事件在单次试验中可能发生也可能不发生 但在大量重复实验中往往呈现出明显的规律性 即该随机事件发生的频率会向某个常数值收敛 该常数值即为该事件发生的概率 另一种表达方式为当样本数据无限大时 样本均值趋于总体均值 因为现实生活中 我们无法进行无穷多次试验 也很难估计出总体的参数 大数定律告诉我们能用频率近似代替概率 能用样本均值近似代替总体均值 很好得解决了现实问题 大

    2025年6月8日
    2
  • 《提问的艺术》读后感「建议收藏」

    《提问的艺术》读后感「建议收藏」前言提问前他明明能帮到我却不帮我提问前必知必会的一些事关于搜索引擎提问时找准对象学会停顿组织你的问题清晰的发问低声下气代替不了做自己的家庭作业删除无意义的要求不要把问题标记为紧急即使对你而言的确如此礼貌总是有益的对待无礼提问禁区总结前言众所周知,你所提技术问题的解答很大程度上取决于你提问的方式与解决此问题的难度,但是怎么清楚的让有经验的人明白你表述的问题,让你获得最

    2022年6月23日
    22
  • blob类型字段[通俗易懂]

    blob类型字段[通俗易懂]1、在mysql中,bolb是一个二进制大型对象,是一个储存大量数据的容器,例如图片,音频。2、插入blob类型数据比如使用preparedStatement,而不能使用Statment,因为blob类型数据不能使用字符串拼接。有关preparedStatement的使用请参考https://blog.csdn.net/weixin_46457946/article/details/1197812273、mysql的四种blob类型类型大小TinyBlob255byte.

    2025年7月12日
    2
  • centos8安装rabbitmq_rabbitmq镜像集群

    centos8安装rabbitmq_rabbitmq镜像集群rabbitmq集群搭建1分别在3台节点安装rabbitmq-server在3台虚拟机(10.0.11.5410.0.11.5610.0.11.57)分别安装相同版本的rabbitmq-server及erlang,2分别修改三台节点的/etc/hosts文件注意必须修改主机名hostnamectlset-hostnamenode1#node2,3以此类推每台节点hosts文件修改后如下3将三台节点的.erlang.cookie内容修改一致(不一致创建集群会报错

    2025年10月24日
    3
  • 数据库课程设计———–学生选课管理系统的设计「建议收藏」

    数据库课程设计———–学生选课管理系统的设计「建议收藏」由于时间关系,里面许多图片都已经变形或错位    课程设计(学年论文)     题目:学生选课管理系统的设计与实现                              系   院    计算机科学技术系  专   业    计算机科学与技术  班   级   姓   名     学   号

    2022年5月19日
    77

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号