如何将透视变换应用于 UIView?

2023-12-15

我正在寻找对 UIView 执行透视变换(例如在 coverflow 中看到的)

有谁知道这是否可能?

我调查过使用CALayer并浏览了所有务实程序员的核心动画播客,但我仍然不清楚如何在 iPhone 上创建这种转换。

任何帮助、指示或示例代码片段将不胜感激!


正如本所说,你需要与UIView's层,使用CATransform3D执行layer's rotation。让观点发挥作用的技巧,如此处描述,就是直接访问矩阵之一cells of the CATransform3D(m34)。矩阵数学从来都不是我的菜,所以我无法准确解释为什么它有效,但它确实有效。您需要将此值设置为初始变换的负分数,然后对其应用图层旋转变换。您还应该能够执行以下操作:

Objective-C

UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

雨燕5.0

if let myView = self.subviews.first {
    let layer = myView.layer
    var rotationAndPerspectiveTransform = CATransform3DIdentity
    rotationAndPerspectiveTransform.m34 = 1.0 / -500
    rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0 * .pi / 180.0, 0.0, 1.0, 0.0)
    layer.transform = rotationAndPerspectiveTransform
}

它为每次旋转从头开始重建图层变换。

可以找到完整的示例(带有代码)here,我在其中几个上实现了基于触摸的旋转和缩放CALayers,基于 Bill Dudney 的示例。该程序的最新版本,在页面的最底部,实现了这种透视操作。代码应该相当简单易读。

The sublayerTransform您在回复中提到的是应用于您的子层的变换UIView's CALayer。如果您没有任何子层,请不要担心。我在示例中使用 sublayerTransform 只是因为有两个CALayers包含在我正在旋转的一层内。

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

如何将透视变换应用于 UIView? 的相关文章

  • Xcode - 免费清除设备文件夹?

    我正在删除一些文件夹和文件 以便在驱动器上腾出更多空间 我知道在路径中 Library Developer CoreSimulator Devices 每个模拟器和每个版本都有文件夹 这个文件夹对我来说大约有 11GB 大小 我知道我可以删
  • iOS 上邮件到达时收到通知吗?

    当邮件到达标准邮件应用程序时 有没有办法让应用程序收到通知 更准确地说 我想编写一个应用程序 它能够从标准邮件应用程序读取传入的电子邮件 其中包含自定义 txt 格式的新联系人或事件 然后 应用程序应将此新联系人 事件添加到 ipad 反之
  • Eddystone 信标检测问题

    以下是我使用 iPhone iOS 9 检测 Eddystone 的代码 void viewDidLoad super viewDidLoad if CLLocationManager locationServicesEnabled loc
  • Sprite Kit - 确定轻弹精灵的滑动手势矢量

    我有一个游戏 圆形物体从屏幕底部射出 我希望能够滑动它们以将它们朝我滑动的方向轻弹 我的问题是 我不知道如何计算滑动的矢量 方向 以便使圆形物体以适当的速度向正确的方向轻拂 我使用的静态矢量 5 5 需要通过滑动速度和滑动方向来计算 另外
  • CloudKit 获取当前用户的所有订阅

    我设法在 Apple CloudKit 中保存 更改和删除记录 我什至收到了与订阅相关的通知 但我不知道如何列出当前用户的所有订阅 到目前为止 这是我的代码 let operation CKFetchSubscriptionsOperati
  • 正在解除分配时尝试加载视图控制器的视图... UISearchController

    我有创建一个的代码UISearchController in my UIVIew sviewDidLoad self resultSearchController let controller UISearchController sear
  • 同一应用程序的不同版本取决于设备(应用程序商店)

    我已经将我的游戏提交到App Store并更新了 现在最新版本是每个下载我游戏的人都应该得到的版本 对吗 现在的问题是 当我从 iPad mini 上的 App Store 下载游戏时 我得到的是正确的版本 但是当我从 iPad 2 下载游
  • iOS 应用内购买沙箱测试显示我的密码错误

    我在 itunesconnect 中创建了一个 Sandbox Tester 帐户 并通过我在网络上注册的电子邮件验证了电子邮件地址 验证后 我尝试使用沙盒帐户在我的应用程序中购买商品 并收到更改密码的提醒 所以我做了 然后我尝试使用新密码
  • 设置使用 iPhone 相机拍摄的图像的类型

    如果我们使用 iPhone 相机拍摄照片 图像将默认以 JPEG 格式保存 我想以其他格式 例如 PNG 保存捕获的图像 是否可以 当我们从应用程序调用 iPhone 相机时 是否可以通过代码执行此操作 我们可以设置捕获图片后必须保存的图像
  • iOS7及以上版本中如何在接收器和扬声器之间切换音频输出?

    我有一个音频播放器 可以选择在接近传感器通知 1 时将音频输出从扬声器切换到接收器 耳机 无论是否连接耳机 以下是我执行此操作的代码 void switchAudioOutput NSString output AVAudioSession
  • CoreAnimation 性能分析 - CAReplicatorLayer 与 CAShapeLayer

    我正在制作一个依赖 CoreAnimation 的应用程序 它有一个 CAReplicatorLayer 和一个 CAShapeLayer 作为子层 当进行 12 次复制 然后对路径进行动画处理 在 touchMoved 上更改它 时 一旦
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 如何更改 UISwitch 关闭状态的默认颜色?

    我想更改 UISwitch 中 onTintColor 的颜色以表示关闭状态 切换位于表格视图中 并且以编程方式进行切换 settingsSwitch setBackgroundColor UIColor whiteColor settin
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • iOS 上每个选项的带有图像的操作表

    有没有办法在 iOS 上将图像添加到操作表中 与苹果在应用程序商店或苹果音乐应用程序上所做的一样 我对苹果文档的基本搜索表明我没有在操作表中子类化或添加子视图 UIActionSheet 并非设计为子类化 也不应向其层次结构添加视图 苹果文
  • Swift 3 '[UIApplicationLaunchOptionsKey:任意]?'无法转换为 '[String : NSString]'

    我有一个 TVOS 应用程序已从 Swift 2 转换为 Swift 3 但出现以下错误 我不确定如何让它安静下来 UIApplicationLaunchOptionsKey 任意 无法转换为 String NSString 它出现在这段代
  • 编写支持 iOS 3.1.3 和 iOS 4.x 的 iOS 应用程序时的陷阱

    我想编写一个可以在 iOS 3 1 3 到 iOS 4 1 上运行的应用程序 我知道如何设置部署目标和基础 SDK 阅读 Apple 文档后 它很大程度上依赖于检查类是否可用和 或实例是否响应特定选择器 现在我的问题是 如果 Apple 从
  • 在 iOS 中管理和解除多个视图控制器

    我是一名 iPhone 新手程序员 在开发我的第一个游戏 应用程序时 我为自己提出了一个问题 创造了一个问题 我对此进行了研究 并认为我已经看到了答案 但我不明白如何使它们适用于我的应用程序 我有一个游戏 有几个视图控制器 欢迎 玩 高分
  • 使用 JavaScript 从 URL 变量读取来加载不同的 CSS 样式表

    我试图在我的 WordPress 博客上使用两个不同的样式表 以便在通过 Web 访问页面时使用一个样式表 而在通过我们的 iOS 应用程序访问博客内容时使用另一个样式表 现在 我们将 app true 附加到来自 iOS 应用程序的 UR
  • 适用于 iOS 的 Google Cast SDK 2.3.0 不支持 64 位

    似乎是适用于 iOS 的 Google Cast SDK 2 3 0 版本 https developers google com cast downloads GoogleCastFramework 2 3 0 Release zip停止

随机推荐

  • 使用 PredicateBuilder、LINQPad 和运算符 ANY 生成 SQL

    I 之前问过关于 Linq To Entities 中的链接条件的问题 现在我用LinqKit一切正常 我想查看生成的 SQL 并阅读后这个答案 I use LinqPad 这是我的声明 var predProduct PredicateB
  • 在继续之前等待另一个可观察的结果

    我不知道是否应该为此发布任何代码 但如果需要的话我会的 我有一个 Angular2 指令 MyDirective和一项服务MyService 该服务在其构造函数中进行 http 调用以获取某些内容并存储在其中this list 指令注入服务
  • Oracle:为什么不使用并行执行?

    看下面的查询 如果我评论子查询 它会使用并行执行 否则不会 查询完成后 SELECT parallel c 20 1 SELECT 2 FROM DUAL FROM DUAL c 你可能已经找到答案了在文档中 仅当满足以下条件时 SELEC
  • 当提供的字符串不为空时 string.IsNullOrEmpty 返回 true

    我有一个单元测试 它调用传入字符串的对象的方法 被调用的方法要做的第一件事就是检查字符串是否为 null 或空 但是 无论 filePath 的值是什么 对 string IsNullOrEmpty 的调用都是 true 见下图 我在这里错
  • 如何在 Scala 中编写返回 Option[List] 的函数?

    假设我有两个函数来获取订单和订单商品 def getOrders Option List Int def getOrderItems orderId Int Option List Int 请注意 两个函数都返回Option List 因为
  • SendInput VB 基本示例

    我希望有人可以提供帮助 我试图找到模拟键盘命令的 SendInput 代码的示例 我希望找到记事本窗口并输入测试消息 我最初在我正在从事的一个项目中使用 SendKeys SendKeys 功能使我能够将键盘命令转发到我们在工作场所使用的定
  • Google App Engine NDB:如何存储文档结构?

    来自 App Engine NDB文档 NDB API 在无模式对象中提供持久存储 数据存储 它支持自动缓存 复杂的查询和 原子交易 NDB 非常适合存储结构化数据 记录 我想使用 NDB 创建如下结构 其中每个实例如下所示 city SF
  • lex 有问题

    我的lex如下 LNUM 0 9 DNUM 0 9 0 9 0 9 0 9 LNUM printf t ECHO printf r n DNUM printf t ECHO printf r n 但事实证明它只能匹配像这样的数字4 12 2
  • 安装 mpi4py

    我正在尝试在我的 Linux 机器上安装 mpi4py 我最近安装了 anaconda 4 1 1 根据他们的文档 该软件包应该附带 mpi4py 2 0 0 当我尝试用 验证 时conda list 我在列表中找不到该包 我努力了 pip
  • 如何通过Socket发送字符串数组对象?

    我有字符串数组对象 可以说 String names new String 7 我还通过在客户端系统上使用 ObjectOutputStream 将其存储到文件中来使该对象持久化 我正在使用 ObjectInputStream 读取存储的对
  • 使用 JavaScript 进行表单验证

    我正在尝试使用 JavaScript 验证表单 但我有点坚持在字段旁边显示一条消息说 此字段是必需的 我该怎么做呢 抱歉 我对 JavaScript 很陌生 这是我的js代码 var allFieldsRequired true funct
  • iOS 9 / Xcode 7 上的 SpriteKit 场景屏幕偏移

    我将一个 SpriteKit 项目从 Xcode64 移动到 Xcode7 在 iOS9 模拟器中运行它 屏幕内容发生了变化 在iOS8模拟器中运行时不会移位 iOS9模拟器截图 在Xcode7中缩放SpriteKit场景会以不同的中心缩放
  • 在 JBoss 上使用 Spring MVC Java Config 出现 404 错误

    我使用 Java Config 编写了一个小型 Spring MVC 应用程序 它在 Tomcat 上工作得很好 但在 JBoss EAP 6 2 上却不行 它已成功部署在 JBoss 上 但当我请求 Spring MVC 定义的任何页面和
  • Durandal 2.0 自定义对话框

    我希望制作一个 Durandal 自定义对话框 在现有的可组合视图模型周围添加一个带有标题和页脚的窗口框架 我制作了一个 customModal html 模板 div class messageBox div class modal he
  • Wordpress AJAX 不起作用 - 响应 0

    我想为我的插件添加 AJAX 支持 但我对这个简单的事情有很大的问题 WordPress 不允许我使用普通 AJAX 我需要使用 WordPress 版本 在任何时候 WordPress 函数 应该生成输出 都会返回 0 我认为原因是 WP
  • 为什么我会收到SettingWithCopyWarning a value is试图在切片副本上设置的警告? [复制]

    这个问题在这里已经有答案了 运行以下代码时 import pandas as pd df pd DataFrame A 1 2 3 B 2 4 8 df2 df df A lt 3 df2 C 100 我收到以下警告 SettingsWit
  • 在内存有限的情况下,如何优雅地降低性能?

    过去几天我一直在尝试消除游戏中的内存泄漏 从而导致许多内存不足错误 我即将添加大量图形 虽然不是非常复杂 但会显着增加系统的处理要求 而且我有点担心我的内存使用情况 我希望有人可能有给我一些建议 我不想低于 Android 2 1 所以请为
  • 如何动态更改Viewpager选项卡颜色?

    如何像这样改变标签的颜色 当我单击 滑动到绿色或任何其他选项卡时 选项卡颜色应更改为适当的颜色 其余其他选项卡颜色应更改为黑色 我怎样才能做到这一点 我正在使用 Viewpager 我在 onpagelistener 中尝试了这段代码 if
  • Java - .Net 对象交换,不基于 Web

    我有一个用 C 实现的客户端 服务器系统 客户端和服务器通过序列化 反序列化交换 Net 对象并通过 TCP IP 进行通信 它在本地网络上运行 不是基于 Web 或基于 Internet 现在我想包括通过 wifi 连接的 Android
  • 如何将透视变换应用于 UIView?

    我正在寻找对 UIView 执行透视变换 例如在 coverflow 中看到的 有谁知道这是否可能 我调查过使用CALayer并浏览了所有务实程序员的核心动画播客 但我仍然不清楚如何在 iPhone 上创建这种转换 任何帮助 指示或示例代码