当前位置: 首页 > news >正文

视图间坐标转换

一、方法

- (CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;

- (CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;

- (CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;

- (CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;

 

二、理解

例子1:[V1 convertPoint:point toView:V2] == [V2 convertPoint:point fromView:V1]

例子2:[aView convertPoint:p toView:anotherView]

将p『相对aView的坐标』转换为『相对anotherView的坐标』

比如说aView是原点(0,0),anotherView是aView的子视图,原点是(100, 0)

那么一个在anotherView中坐标是(0, 0)的点经过转换后在aView的坐标是(100, 0)

 

三、注意 

1、如fromView是nil,则返回CGrectZero。 
   这种情况发生在view的init方法中; [self.superView convertPoint:aPoint toView:toView]; 
   此时的self.superView是nil。 
2、如果toView是nil则相当于:[fromView convertPoint:aPoint toView:selfView.window]; 
所以如果要将坐标转为相对于窗口的坐标,则只要如下就可以了: 
[fromView convertPoint:aPoint toView:nil]; 

3、fromView和toView还没有放到一个view中去,也就是没有对它们执行addSubview方法,此时它们的superView是nil。这种情况一定要小心了, 
   尽量不要这么作,因为view还没有建立明确的相对坐标系,这时cocoa框架一定很抓狂,作了很多假设,一般是以创建fromView和toView的那个view作为superView来处理的,但是并不确定。 
   所以一定要小心。

转载于:https://www.cnblogs.com/chenyuansheng/p/5324736.html

相关文章:

  • Spring与SpringMVC的区别
  • php关于的用法
  • Spring与SpringBoot的关系
  • Java网络编程(模拟浏览器访问Tomcat服务器)
  • Spring 、Spring Boot 和 Spring Cloud 的关系
  • xmpp 环境配置
  • SpringBoot常用注解
  • 二OpenStack 安装 Identity Service - Keystone
  • Spring IOC和AOP
  • Bean生命周期
  • Spring事务及事务传播
  • [转]优秀的程序员不会觉得累成狗是一种荣耀
  • 一种SPA(单页面应用)架构
  • 【学习目标】
  • 浅析 Linux 初始化 init 系统,第 2 部分: UpStart
  • “大数据应用场景”之隔壁老王(连载四)
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Elasticsearch 参考指南(升级前重新索引)
  • Python爬虫--- 1.3 BS4库的解析器
  • rabbitmq延迟消息示例
  • Vue2.0 实现互斥
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • windows下如何用phpstorm同步测试服务器
  • 官方解决所有 npm 全局安装权限问题
  • 事件委托的小应用
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 主流的CSS水平和垂直居中技术大全
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • !!Dom4j 学习笔记
  • !$boo在php中什么意思,php前戏
  • # C++之functional库用法整理
  • #HarmonyOS:基础语法
  • #pragma multi_compile #pragma shader_feature
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $$$$GB2312-80区位编码表$$$$
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (JS基础)String 类型
  • (vue)页面文件上传获取:action地址
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (超详细)语音信号处理之特征提取
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (一)Dubbo快速入门、介绍、使用
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core 依赖注入的基本用发
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 使用 XPath 来读写 XML 文件
  • .NET 指南:抽象化实现的基类
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET分布式缓存Memcached从入门到实战
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth