在 Swift 中旋转 UIImage

2023-11-25

我正在使用 Xcode 6.0.1 和 Swift。我有一个 UIImage,我想使用旧图像作为源来制作另一个图像,新图像以某种方式旋转......比如说垂直翻转。

这个问题已经有答案了几个月前。然而,即使情况相同,该解决方案对我不起作用。

当我有

var image = UIImage(CGImage: otherImage.CGImage, scale: 1.0, orientation: .DownMirrored)

Xcode 抱怨“调用中有一个额外的参数‘scale’”。在检查了 Apple 文档后,这是没有意义的,因为该版本的初始化程序确实采用了这三个参数。省略比例和方向参数确实可以解决问题,但会阻止我进行旋转。

我能找到的唯一其他参考是this guy,谁有同样的问题。

你怎么认为?

我确实需要它在这个版本的 Xcode 上运行,所以如果有另一种方法来执行旋转(我还没有找到),那将会很有用。


斯威夫特 5 解决方案

I wrote 像素SDK它为这个问题提供了更强大的解决方案,否则这是最简单的解决方案:

extension UIImage {
    func rotate(radians: Float) -> UIImage? {
        var newSize = CGRect(origin: CGPoint.zero, size: self.size).applying(CGAffineTransform(rotationAngle: CGFloat(radians))).size
        // Trim off the extremely small float value to prevent core graphics from rounding it up
        newSize.width = floor(newSize.width)
        newSize.height = floor(newSize.height)
        
        UIGraphicsBeginImageContextWithOptions(newSize, false, self.scale)
        guard let context = UIGraphicsGetCurrentContext() else { return nil }
        
        // Move origin to middle
        context.translateBy(x: newSize.width/2, y: newSize.height/2)
        // Rotate around middle
        context.rotate(by: CGFloat(radians))
        // Draw the image at its center
        self.draw(in: CGRect(x: -self.size.width/2, y: -self.size.height/2, width: self.size.width, height: self.size.height))
    
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return newImage
    }
}

要使用此解决方案,您可以执行以下操作

let image = UIImage(named: "image.png")!
let newImage = image.rotate(radians: .pi/2) // Rotate 90 degrees
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中旋转 UIImage 的相关文章

  • 如何在 Apple Watch Extension/App 和 iOS App 之间建立通信通道

    我正在探索 WatchKit SDK 当我有 WatchKit 应用程序时 是否可以在 WatchKit 应用程序上从 iPhone 应用程序设置值 例如文本 设置 我可以从 iPhone 应用程序调用 WatchKit 应用程序扩展中的函
  • 由于语言错误,Itunes Connect 无法提交

    Thats all it shows https i stack imgur com 0aZm8 png 我不确定它没有告诉我出了什么问题 it shows its linked to the language https i stack
  • 自动布局、UIDynamics 和动画

    我对自动布局还很陌生 并且对如何为视图设置动画感到困惑 我读了很多 我知道你必须遵守限制 编辑它 然后包装layoutIfNeeded in an UIView动画块 但当真正要做的时候 我却有点失落 我很乐意有人能向我解释如何做这个动画
  • iOS中的performSelector有什么用

    的作用是什么执行选择器 比较 self btnClicked and self performSelector selector btnClicked void btnClicked NSLog Method Called 两者都对我来说工
  • 我们可以从 LinkPresentation 框架中的 LPLinkView 中提取图像吗?

    我想在我的应用程序中呈现丰富的链接 并将这些数据发送到我的服务器 我需要访问视图内的图像LPLinkView https developer apple com documentation linkpresentation lplinkvi
  • 迭代 NSOrderedSet

    我正在尝试迭代 NSOrderedSet 的实例 像这样的事情 func myFunc var orderedSet NSOrderedSet array 42 43 44 for n in orderedSet NSLog i n 但是
  • iOS 8 中的 UISplitViewController 状态恢复

    在 iOS 8 上 UISplitViewController 似乎可以保存和恢复其子视图的状态 例如 主视图是否隐藏 这是不可取的 因为我的应用程序应该始终以横向方式显示主视图 并始终以纵向方式隐藏它 如果用户以横向模式关闭应用程序 保存
  • UICollectionView 未出现

    我正在尝试设置UICollectionView 以编程方式在我的视图控制器中扩展UIViewController 由于某种原因 我的收藏视图根本没有显示 以下是我所拥有的 为什么没有出现 我将它连接到委托和数据源并将其添加为子视图self
  • 如何从代码隐藏中设置 CarouselView 的项目?

    我有一个 CarouselView 它绑定到图像的 ItemsSource 但我想通过更改 CarouselView 的索引来更改当前显示的图像 我尝试使用 CarouselView Position 作为必须选择的元素的索引 但不幸的是这
  • 在后台任务中安排通知

    我正在为 iOS 开发一个日历 闹钟应用程序 它与网络服务器同步 当在服务器上添加活动时 会发出推送通知 以便 iOS 客户端可以获取新数据 并根据需要更新和安排下一次警报的时间 本地通知 但这仅在应用程序在客户端打开时才有效 我希望客户端
  • 混合静态和动态 UITableViewController 内容会导致 NSRangeException

    我一直在寻找这个错误 并找到了一些具有类似行为的帖子 但没有解决问题的解决方案 我有一个 UITableViewController 在 SB 中声明为静态 它具有以下部分 第 0 部分 配方 是静态的 有 4 个单元格 第 1 部分 口味
  • PrepareForSegue之谜

    我在两个不同的 VC 中有一个prepareForSegue 方法 一个使用一个if声明 而另一个旨在使用switch 除了名称之外 代码几乎相同 这个效果很好 void prepareForSegue UIStoryboardSegue
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • 在 Instruments 中查找内存泄漏行

    我是 iOS 中的仪器新手 我正在尝试使用 Xcode 4 5 2 并按照本教程查找仪器中的内存泄漏 http soulwithmobiletechnology blogspot sg 2011 04 how to check memory
  • 将 iPhone 上的 stderr 写入文件和控制台

    我正在遵循答案中的建议here https stackoverflow com questions 5179108 iphone how to read application logs from device用于将 iOS 设备上的 NS
  • 我应该在哪个方法中设置 UITextField 的委托?

    在 viewDidLoad 或 init 方法中设置 UITextField 的委托是一个好习惯吗 我尝试在 init 方法中将委托设置为 self 但它没有调用相应的委托方法 当我将代码移动到 viewDidLoad 中时 它注册为将 s
  • 在 iOS 上从 GPS 获取时间

    我正在开发一个跟踪器应用程序 该应用程序需要高精度地了解设备位置 即它使用位置服务并忽略水平精度低于 20 米的位置 CLLocation没有明确声明是否通过 GPS 确定 但是 如果水平精度为 20 米或更好 则可以认为它是来自 GPS
  • 退出导航控制器

    我试图离开初始视图控制器 并进入空白视图控制器 这很好 但是这会使空白视图控制器也成为导航控制器的一部分 这不是我想要的 我想脱离视图控制器 在视图控制器中 我尝试退出 它会自行弹出 当我尝试视图中的方法时 将出现目标视图控制器 self
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we

随机推荐

  • 我无法准确理解 JavaScript 的方法 string.match(regexp) 的 g 标志是如何工作的

    在 JavaScript The Good Parts 一书中 它解释了方法string match regexp 如下 match 方法匹配一个字符串和一个正则表达式 如何 这取决于 g 标志吗 如果没有 g 标志 则 调用 string
  • Angularjs - 在 tr ng-repeat 中添加额外的行

    NG repeat 出现在表行上 我的问题是我们如何才能实现以下目标 tr Looping here tr 现在 当数据对象在 a 上循环时 tr 我有一个场景 我必须将 1 行数据分成两部分显示 tr Eg Table 数据1 数据1 2
  • React:ReferenceError:regeneratorRuntime 未定义

    我正在尝试在我的反应应用程序中使用异步和等待 onSubmit async model gt await this setState data model 添加上述代码后 我在浏览器控制台中收到错误 ReferenceError 未定义 r
  • Android 屏幕在显示/隐藏系统栏时闪烁

    问题 我想在用户向上滚动 RecyclerView 时显示系统栏 并在用户向下滚动时隐藏系统栏 然而 使用我的方法它可以工作 但内容在显示 隐藏过程中奇怪地移动和闪烁 您在此处上传了该行为的视频 https drive google com
  • 获取 Java 堆栈跟踪中涉及的对象

    我可以使用检索当前堆栈跟踪Thread currentThread getStackTrace 但这只给了我调用中涉及的类 是否可以检索调用跟踪中涉及的对象实例 也许某种库允许我从堆中检索对象 我有一个问题 需要我追溯到一个 Spring
  • 如何在 numpy 中对二维数组进行装箱?

    我是 numpy 的新手 我有一个 2D 对象数组 我需要将其装入一个较小的矩阵中 然后获取每个容器中对象的数量以制作热图 我按照答案在这个线程上创建垃圾箱并对一个简单的数组进行计数 但我不确定如何将其扩展到二维 这是我到目前为止所拥有的
  • 如何在没有 Activity/Service 的情况下创建 BroadcastReceiver?

    我正在尝试创建没有活动 服务的 BroadcastReceiver 虽然当代码中存在活动时 当我删除活动时 注册和执行代码没有问题 但它失败了 我确实使用清单注册了 BroadcastReceiver 但是当从项目中删除活动时 它不会被调用
  • Java-声明新的泛型集时出现意外的类型错误

    我以为我知道我在用泛型做什么 但显然不知道 ArraySetList
  • 在Python中绘制二维矩阵,代码和最有用的可视化

    我有一个非常大的矩阵 10x55678 采用 numpy 矩阵格式 该矩阵的行对应于一些 主题 列对应于单词 文本语料库中的唯一单词 该矩阵中的每个条目 i j 都是一个概率 这意味着单词 j 以概率 x 属于主题 i 因为我使用的是 id
  • 如何使用IntentCompat.makeRestartActivityTask()?

    我正在尝试实现一个按钮 该按钮将导致我的应用程序返回到第一个活动并表现得好像它 几乎 重新启动了一样 这段代码 Intent newIntent new Intent currentActivity getApplicationContex
  • 如何在 php 中将奇怪的强/粗体 Unicode 转换为非粗体 UTF-8 字符?

    我正在尝试使用 twitter api 在我的数据库中存储一条推文 但我得到了这种 stage 字符 它似乎是 自然 粗体字符 普通字符 azertyuio 奇怪的字符 如果我在我的 netbeans 编辑器中粘贴最强的字符 我会得到类似方
  • 通过 VBScript 了解用户是否具有管理权限的最佳方法

    我需要检查执行脚本的用户是否具有计算机的管理权限 我已经指定了执行脚本的用户 因为该脚本可以使用除使用类似于 Runas 的用户登录之外的用户执行 Javier 这两种解决方案都可以在安装了英文版 Windows 的 PC 上运行 但如果安
  • 获取 contenteditable div 中的插入符索引(包括标签)

    我有一个contentEditable div其中我有多个标签 br b u i 和文本 我需要获取相对于 div 的插入符索引位置 包括所有标签 例如 div abc b def br ghi b jkl div 如果光标位于g and
  • 调用派生类的构造函数在基类的构造函数之前执行

    好吧 最初我在每个派生类中都有几个具有不同值的常量 例如 MAX SPEED 这个想法是在基类的某些方法中使用这些值 就在那时 我意识到我无法使用常量来做到这一点 因此我创建了只读属性 我需要一种方法在实例化时将这些值分配给私有字段 最好是
  • 为什么法线使用相机空间而不是模型空间?

    我正在学习 OpenGL 图形 并且正在学习阴影 我正在阅读的教程告诉我将法线和光矢量转换为相机空间 为什么是这样 为什么不能将坐标保留在模型空间中 随之而来的问题是如何处理模型转换 我无法找到明确的答案 我目前有这个代码 vec3 nor
  • 您可以在 irb 会话中自动在每个命令中“要求”ruby 文件吗?

    我当前正在编辑一个文件 并使用 irb 来测试 api gt require file rb gt o Object new gt o method 然后我希望能够编辑 file rb 并能够立即看到更改 示例 假设当我第一次需要 file
  • 包管理器名称未找到异常

    我是安卓编程新手 我使用 Eclipse 以及 MainActivity java 和 ClassFragment java 文件创建了一个应用程序 ClassFragment 是一个片段 我正在使用新更新的 appcompat 库 我只想
  • GLSL:关于相干限定符

    我没明白如何coherent限定符和原子操作一起工作 我使用以下代码在同一 SSBO 位置上执行一些累积操作 uint prevValue newValue uint readValue ssbo index do prevValue re
  • Blazor:没有会话/JWT 令牌时重定向到登录页面?

    我正在尝试在 Blazor 中创建一个新应用程序并正在进行身份验证 我正在使用存储在本地存储中的 JWT 令牌 当应用程序加载时 我需要检查存储中是否有令牌 如果是这样 请将其添加到所有 API 请求的 HTTP 标头中 如果不是 则在页面
  • 在 Swift 中旋转 UIImage

    我正在使用 Xcode 6 0 1 和 Swift 我有一个 UIImage 我想使用旧图像作为源来制作另一个图像 新图像以某种方式旋转 比如说垂直翻转 这个问题已经有答案了几个月前 然而 即使情况相同 该解决方案对我不起作用 当我有 va