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)
上一篇 2022年10月8日 下午5:00
下一篇 2022年10月8日 下午5:00


相关推荐

  • 安全帽识别的原理和系统应用

    安全帽识别的原理和系统应用安全帽识别的原理是用AI技术对工作现场的视频进行实时分析,如果发现工作人员未按要求佩戴安全帽或违规吸烟,系统会自动发出警报,在提醒监理人员的同时,系统会自动保存时间、地点及相应的照片,作为处罚的依据,AI大潮之下,传统的建筑工地也有许多方面得到了提升,除了人脸识别之外,智慧工地最关心的就是安全问题,如何将AI技术应用于安全方面呢?鹰眸安全帽识别系统就是这些特殊区域的守护者。可以说,安全帽智能识别是…

    2022年5月12日
    39
  • eclipse创建java项目无反应「建议收藏」

    eclipse创建java项目无反应「建议收藏」问题:系统升级到win10,重新安装eclipse,发现设置了原来的工作文件夹后,点击JavaProject和Project都没有反应环境配置:WIN10系统,64位。jdk15环境变量:Path 值:%JAVA_HOME%\bin%JAVA_HOME%值:C:\ProgramFiles\Java\jdk-15.0.2分析:WIN10系统,加载JAVA_HOME有时候会出问题。直接用路径就没问题。解决方案:1、打开在系统环境变量设置,改变环境变量:不设置%J

    2025年7月30日
    6
  • JShell教程

    JShell教程什么是 JShellJShell 工具是一个命令行工具 通过提供 Java 编程语言元素的交互使用来促进探索性编程 JShell 是一个 REPL 读取 评估 打印循环 无论是学习 Java 语言还是探索陌生的代码 包括新的 JavaAPI 它都是理想的选择 典型的 Java 开发意味着编写一个完整的程序 然后对其进行编译 修复所有错误 运行它 找出问题所在 进行编辑和重复 使用 JShell 您可以一次输入一个程序元素 立即查看结果并进行相应调整 在开发过程中 可以将代码粘贴到 JShell 中 和 或将工作代码从 JSh

    2026年3月18日
    2
  • C++学习地址

    C++学习地址

    2021年8月24日
    63
  • idea2022.01.13激活码永久[最新免费获取]2022.02.05

    (idea2022.01.13激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html76VF8VOVJM-eyJsaWNlbnNlSW…

    2022年4月1日
    105
  • SecureCRTPortable连不上64位的CentOS6.5

    SecureCRTPortable连不上64位的CentOS6.5最近在VMware上装64位的CentOS6.5,发现ifconfig之后没有eth0,刚开始以为virbr0的inetaddr的ip就网卡的ip,其实这是为连接其上的其他虚拟网卡提供DHCP服务,eth0的ip才是网卡的ip如下图直接用ifconfig命令是没有eth0的:要看到eth0里的ip,用dhclienteth0命令自动获取一下ip,接着用ifconfig|more或者if…

    2022年5月29日
    37

发表回复

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

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