ios - 将文本视图添加到 iPhone X 上的图像“挤压”输出图像
问题描述
我目前有一段代码试图在图像上添加一个文本视图,最终目标是用覆盖的文本保存新图像。这是执行此操作的代码:
class func addText(label: UITextView,imageSize: CGSize, image: UIImage) -> UIImage {
let scale = UIScreen.main.scale
UIGraphicsBeginImageContextWithOptions(CGSize(width: imageSize.width, height: imageSize.height), false, scale)
let currentView = UIView.init(frame: CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height))
let currentImage = UIImageView.init(image: image)
currentImage.frame = CGRect(x: 0, y: 0, width: imageSize.width, height: imageSize.height)
currentView.addSubview(currentImage)
currentView.addSubview(label)
currentView.layer.render(in: UIGraphicsGetCurrentContext()!)
let img = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return img!
}
它被称为如下(图像只是手机相机拍摄的标准1920x1080图像):
self.imageToEdit.image = UIImage.addText(label: textView, imageSize: UIScreen.main.bounds.size, image: self.imageToEdit.image!)
这在我测试 iPhone 6s 时效果很好,但是当我在 iPhone X 上测试时,它会“挤压”图像的两侧,因此面部和其他特征在addText
.
我有一种预感,这是由于图像通过 iPhone X 的凹槽向上延伸,导致某种类型的缩放/纵横比填充,但我不确定从哪里开始寻找。
有谁知道如何阻止 iPhone X 中发生“挤压”(我也猜想这发生在所有其他有缺口的 iPhone 型号中)
谢谢。
解决方案
刚刚想通了!
我需要包括这一行:
currentImage.contentMode = .scaleAspectFill
在我的addText
功能中。
因为我要返回一个新UIImageView
视图,所以我需要确保它具有与原始视图相同的内容模式。
推荐阅读
- css - 向 div 添加了溢出-y 滚动条隐藏了我的 x-溢出
- django - 在 django 模板中为模态定位正确的图像
- javascript - React 组件覆盖内部渲染
- azure-sql-database - 行级安全性未按预期工作
- c# - Registry.CurrentUser.CreateSubKey 没有创建任何子键?
- javascript - 用javascript计算程序
- javascript - 从数组中选择 5 个随机字母
- php - Laravel,使用多态表获取数据在删除后不更新
- java - Maven 检索到不期望的 jar
- class - 如何在其他类中运行 JavaFX Window