iOS:将视图转换为圆柱形

2024-02-08

借助 Quartz 2D,我们可以改变对事物的看法x, yand z axis.

在某些情况下,我们甚至可以通过更改矩阵的值使它们看起来像 3D。

我想知道是否可以将视图转换为圆柱体形状,如下图所示?

请忽略气缸的顶部。我更好奇是否有可能扭曲UIView如图所示,周围就像圆柱体的侧面。

是否可以只使用 Quartz 2D、图层和变换(而不是 OpenGL)?如果没有的话,至少可以把它画进去吗?CGContext让视图看起来像这样?


你绝对不能通过转换来做到这一点。您可以做的是在屏幕外创建 UIView,获取视图的上下文,从中获取图像,然后使用非线性映射将图像映射到新图像。

So:

  1. 使用 UIGraphicsBeginImageContext() 创建图像上下文
  2. 使用 view.layer.renderInContext() 渲染视图
  3. 使用 CGBitmapContextCreateImage() 获取结果的图像
  4. 编写一个映射函数,获取 x/y 屏幕坐标并将它们映射到圆柱体上的坐标。
  5. 创建一个屏幕视图大小的新图像,并调用映射 函数将像素从源复制到目标。
  6. 将目标位图绘制到屏幕上。

这些步骤都不是特别困难,您可能会想出各种简化方法。例如,如果您可以不进行透视变换,则可以只渲染原始视图的条带,根据圆的坐标偏移 Y 坐标。

如果您希望视图实际上是交互式的,那么您需要在处理触摸事件时以相反的方向进行转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS:将视图转换为圆柱形 的相关文章

随机推荐

  • JPA/Hibernate 中键“PRIMARY”的重复条目

    我有一个many to manymysql 数据库中的关系 Module
  • 变量前的美元符号

    我有这个示例代码 用于从现有数据框 my data 创建新数据框 new data new data NULL n 10 this number correspond to the number of rows in my data con
  • 我怎样才能在我的桌子上有一个圆形边框和边框折叠:折叠? [复制]

    这个问题在这里已经有答案了 我有以下内容 table style border 1px solid 999 thead tr style background color red th Weekday th th Date th th Ma
  • 如何将struct从合约A传递到合约B?最佳实践

    我发现这样 当创建一个具有结构的通用接口时 然后合约A和B继承该具有结构的接口 但我想知道是否还有其他方法 是否存在可以更新具有结构的合约的情况 pragma experimental ABIEncoderV2 pragma solidit
  • 确定隐马尔可夫模型中隐藏状态的数量

    我正在学习隐马尔可夫模型 用于对 t 个图像帧序列中的运动进行分类 假设每个帧有 m 个维度的特征 然后我将它聚集成一个符号 用于可观察的符号 我为 k 类创建 k 个不同的 HMM 模型 那么 如何确定每个模型的隐藏状态数量以优化预测 顺
  • 密码保护 iPhone 应用程序

    我正在启动一个新应用程序 我想知道如何需要密码才能打开它 我正在考虑一个UIActionSheet在应用程序中didFinishLaunchingWithOptions应用程序委托实现文件的方法 但我不确定如何去做 不过我会继续努力 Fou
  • AngularFire $add 操作导致浏览器冻结

    我正在使用 angularjs 学习 Firebase 从本教程https thinkster io tutorials angularfire realtime slack clone creating the channels side
  • 在 Java 中对双精度值进行哈希处理

    我想知道如何在 Java 中对 double 进行哈希处理 我已经散列了其他原始数据和对象 我想我可以使用 hashcode 方法吗 从我所看到的来看 这看起来相当复杂 我遇到了一些关于创造种子的事情 我想知道关于如何解决这个问题的任何想法
  • 制作通用数组是不好的做法吗?替代方案是什么?

    我在学校用 C 编码已经三年了 两天前我开始用 Java 编码 我的问题是 制作通用数组是不好的做法吗 另一种选择是什么 我很困惑 除了做一些奇怪的事情 例如这个例子 之外 我似乎无法制作通用数组 Class implementing th
  • 对象中对象中的 JavaScript `this`?

    抱歉 帖子标题模糊 我无法为这篇文章制定正确的英文名称 例如我有这样一个对象 var APP a 1 b function return this a 这样 如果我打电话console log APP b than this将引用 APP
  • 如何重置 Kafka 偏移量以匹配尾部位置?

    我们将 Storm 与 Kafka 和 ZooKeeper 结合使用 我们遇到过这样的情况 我们必须删除一些主题并用不同的名称重新创建它们 除了现在读取新主题名称之外 我们的 Kafka spouts 保持不变 但是现在 当尝试从新主题读取
  • 在 fluidd 中解析 nginx 入口日志

    我想在 Kubernetes 中使用 Fluentd 解析入口 nginx 日志 这在 Logstash 中相当简单 但我对 fluidd 语法感到困惑 现在我有以下规则
  • Greenlet 运行时错误和在 docker 中部署的应用程序不断启动所有工作人员

    RuntimeWarning greenlet greenlet 大小已更改 可能表示二进制 不兼容 预期来自 C 标头的 144 从 PyObject 得到的为 152 所有的工人都被解雇了 2020 09 28T14 09 41 864
  • 使用 spring 3.x 配置速度工具

    我对弹簧和速度都很陌生 我想使用 spring 3 x 配置速度工具 但我找不到相关的好文章 速度模板未显示会话变量 我从 Spring 控制器设置 至于在spring 3 x中配置Velocity工具 首先将tools xml文件放在有用
  • Java 新手,出现错误“int 无法取消引用”

    我是 java 新手 我已经从事这个练习有一段时间了 但不断收到错误 int 无法取消引用 我看到了几个类似的问题 但仍然无法弄清楚我自己的情况 这是完整的代码 package inclass class OneInt int n OneI
  • 如何在角度2中等待函数完成执行?

    下面是我的代码 我想要login and authenticated 等待的函数getProfile 函数来完成其执行 我尝试了多种方法 例如承诺等 但无法实现 请建议我解决方案 import Injectable from angular
  • 从服务器视频链接生成缩略图 android

    在android中是否可以获取某人的任何类型视频的缩略图 该人仅具有该视频的url链接 并且视频可以来自任何来源 例如youtube或任何来源 请告诉我是否可能 这是我的我试图通过java代码获取youtube视频的缩略图 public c
  • jQuery 延迟和承诺 - .then() 与 .done()

    我一直在阅读有关 jQuery deferreds 和 Promise 的内容 但我看不出使用之间的区别 then done 成功回调 我知道埃里克 海因兹 http www erichynds com jquery using defer
  • java.lang.NoSuchFieldError:android.support.v7.appcompat

    我将我的支持库从 r20 更新到了 r21 现在当我运行我的应用程序时 我收到此错误super onCreate我的主要活动 java lang NoSuchFieldError android support v7 appcompat R
  • iOS:将视图转换为圆柱形

    借助 Quartz 2D 我们可以改变对事物的看法x yand z axis 在某些情况下 我们甚至可以通过更改矩阵的值使它们看起来像 3D 我想知道是否可以将视图转换为圆柱体形状 如下图所示 请忽略气缸的顶部 我更好奇是否有可能扭曲UIV