UIView CALayer
2019独角兽企业重金招聘Python工程师标准>>>
主要说关于layer的anchorPoint,图形变换的坐标原点
layer与view是一起的,正常情况下anchorPoint的值是(0.5, 0.5),也就是layer的正中央,如果想把坐标原点变成现在layer的左上角,如果仅仅设置anchorPoint为(0,0),这样的结果是layer的左上角变到了原来的正中央(也就是改变了原来layer的位置position),那么图形的变换就不是原来layer的左上角了,而是原来的正中央,其实就是变换的实际物理点没有变,只是逻辑上的值改了,此时还需要设置下layer的position为(0,0),这样就可以把layer再拉回和原来的位置一样,而且变换的坐标原点变成原来的左上角。
因为: 1)anchorPoint只是逻辑点,不是实际的物理显示点
2)改变layer的anchorPoint的时候,也会改变layer的position,也就是改变了物理显示点,所以当设置anchorPoint为(0,0)的时候,坐标的变换点确实变成了layer的左上角,但是它所占据的物理显示点还是原来的layer的正中央,所以就把物理显示点(position)变到了原来的正中央的位置,也就是(width/2.f, height/2.f),所以必须再设置下postion的值是(0,0),就可以再把layer设置回最开始原来的位置。
有点绕,需要多读几遍。
转载于:https://my.oschina.net/u/913344/blog/692794
UIView CALayer相关推荐
- UIView 绘制渲染机制
#前言 APP页面优化对小编来说一直是难题,最近一直在不断的学习和总结 ,发现APP页面优化说到底离不开view的绘制和渲染机制.网上有很多精彩的博客,小编借鉴之前N多大牛研究成果,同时结合自己遇到的 ...
- CFRunLoopRef 的内部逻辑(向 ibireme学习)
据苹果在文档里的说明,RunLoop 内部的逻辑大致如下: /// 用DefaultMode启动 void CFRunLoopRun(void) {CFRunLoopRunSpecific(CFRun ...
- YYCache 源码学习(一):YYMemoryCache
其实最近是在重新熟练Swift的使用,我想出了一个比较实用的方法,那就是一边看OC的项目,看懂之后用Swift实现一遍.这样既学习了优秀的源码又练习了Swift,一举两得. 之前看过几篇文章是剖析YY ...
- ios Runloop
一.概念:一个Runloop就是一个事件处理的循环,用来不停的调度工作和处理输入事件,使用runloop的目的是让你的线程在有工作的时候处于工作状态,没有工作的时候处于休眠状态. 一般来讲,一个线程一 ...
- 深入理解RunLoop(转载)
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...
- ios 的touch事件分析
IOS之触摸事件和手势 13.1 事件概述 13.2 触摸事件 13.3 手势 13.1 事件概述 事件是当用户手指触击屏幕及在屏幕上移动时,系统不断发送给应用程序的对象. 系统将事件按照特定的路径传 ...
- UI渲染回顾简单笔记
UI渲染的简单过程: CPU,GPU,显示器协同工作,CPU 中计算显示内容,比如视图的创建.布局计算.图片解码.文本绘制等,然后将计算结果提交给GPU,由 GPU 进行变换.合成.渲染.随后 GPU ...
- iOS底层原理探究-Runloop
Runloop 1. 概述 一般来说,一个线程只能执行一个任务,执行完就会退出,如果我们需要一种机制,让线程能随时处理时间但并不退出,那么 RunLoop 就是这样的一个机制.Runloop是事件接收 ...
- 深入理解RunLoop
RunLoop 是 iOS 和 OS X 开发中非常基础的一个概念,这篇文章将从 CFRunLoop 的源码入手,介绍 RunLoop 的概念以及底层实现原理.之后会介绍一下在 iOS 中,苹果是如何 ...
最新文章
- typora背景变黑
- kafka之四:Kafka集群搭建
- 企业级java springcloud b2bc商城系统开源源码二次开发-hystrix 请求缓存
- 线程之间通信 等待(wait)和通知(notify)
- gan怎么输入一维数据_时空序列预测模型GAN+LSTM
- 向量二次规划matlab,MATLAB中使用Opti Toolbox的混合整数二次规划
- 人类一败涂地电脑版_《漫威复仇者联盟》帧数对比丨PS4《人类一败涂地》新地图上线...
- Linux基础知识之包管理工具
- 服务器查看数据库日志文件,服务器数据库查看日志文件
- iOS 如何找到或生成 .dSYM 文件
- Android编程怎么打开,安卓手机如何开启开发者模式?简单三步骤教你解决!
- 微信第三方平台授权流程- java
- 美之图(meizitu)apk实战分析学习
- [转载]从春招到秋招,一个本科生的求职之路。
- js时间戳转时间(年-月-日 时:分:秒)
- 王者荣耀扫码登录源码
- 京东2019春招编程题
- ui设计能干一辈子吗
- Echarts中国地图的显示
- 单周期CPU,多周期CPU
热门文章
- 牛津临床和实验室调查手册 Oxford Handbook of Clinical and Laboratory Investigation
- 2021-11-14Collection
- 第14天学习Java的笔记(成员变量和局部变量)
- matlab clabel函数用法,CLabel函数说明
- zeekooper集群搭建_How to do - ZooKeeper集群搭建(我见过最详细的完整教学)
- zeekooper集群搭建_Zookeeper与Kafka集群搭建完整教程
- springboot项目文档源码_基于SpringBoot和Vue的企业级中后台项目(附源码)
- 编程语言学习--C语言学习资料
- EM算法matlab和Java实现
- 什么是latex科技排版系统,有对比word有何不同?