for (index, textData) in textDataCurrentImg.enumerated() {
                let textColor = textData.fontColor
                let textFont = UIFont(name: textData.font.fontName, size: textData.fontSize)!
                let padding: CGFloat = 10.0
                let breakdText = textData.addBreaks(in: textData.text, with: textFont, forWidth: newImage.size.width, padding: Int(textData.xPosition))
                
                let scale = UIScreen.main.scale
                UIGraphicsBeginImageContextWithOptions(newImage.size, false, scale)
                
                // Draw image
                newImage.draw(in: CGRect(origin: CGPoint.zero, size: newImage.size))
                
                let textFontAttributes: [NSAttributedString.Key : Any] = [
                        NSAttributedString.Key.font: textFont,
                        NSAttributedString.Key.foregroundColor: textColor,
                        ]
                
                if let backColor = textData.backColor {
                    // Draw background rectangle
                    let textSize = breakdText.size(withAttributes: textFontAttributes)
                    let backgroundRect = CGRect(
                        origin: CGPoint(x: textData.xPosition - padding, y: textData.yPosition - padding),
                        size: CGSize(width: textSize.width + 2 * padding, height: textSize.height + 2 * padding)
                    )
                    backColor.setFill()
                    UIRectFill(backgroundRect)
                }
                
                // Draw text on top of the background rectangle
                breakdText.draw(in: CGRect(x: textData.xPosition, y: textData.yPosition, width: newImage.size.width, height: newImage.size.height), withAttributes: textFontAttributes)
                
                newImage = UIGraphicsGetImageFromCurrentImageContext() ?? image
                UIGraphicsEndImageContext()
            }

这是我的代码,我在这里添加文本到照片

文本对齐--对于文本对齐,我已经try 过了,但没有达到预期效果.

let textFontAttributes: [NSAttributedString.Key : Any] = [
        NSAttributedString.Key.font: textFont,
        NSAttributedString.Key.foregroundColor: textColor,
        NSAttributedString.Key.paragraphStyle: {
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.alignment = textData.textAlignment
            return paragraphStyle
        }()
    ]

文字背景的alpha let alpha: CGFloat = 0.5 let alphaColor = backColor.withAlphaComponent(alpha)

在文本之前添加图像-if textData.isLocation我想在文本之前添加一张图像,如下所示 example image

推荐答案

您可以将所有内容放在一个自定义视图中,如下所示:

enter image description here

然后,您可以在拍摄快照之前隐藏所需的任何子视图或整个视图

class CollectionPhoto: UIView {
  @IBOutlet private var pinIcon: UIImageView!
  @IBOutlet private var contentLabel: UILabel!
  @IBOutlet private var contentImage: UIImageView!
  
  func takeSnapShot() -> UIImage? {
    pinIcon.isHidden = true
    contentLabel.isHidden = true
    
    ...
    let image = UIGraphicsGetImageFromCurrentImageContext()
     
    pinIcon.isHidden = false
    contentLabel.isHidden = false

    return image
  }
}

Swift相关问答推荐

如何在Swift 中创建移动的uil标签?

如何在一个角色隔离类上编写自定义==实现?

为什么我的引用类型对象在初始化后有3个强引用?

为什么第二项任务不在第一项任务完成之前开始?(并发队列)

如何在向照片添加文本时定义文本对齐、文本背景的Alpha和在文本之前添加图像

查找数组中 ** 元素 ** 的属性的最小值和最大值

为什么我不能在这个 Swift 间接枚举中返回 self ?

为什么我的Swift app不能用xcodebuild构建,但是用XCode可以构建?

在 RealmSwift 中表示范围值?

swiftui中服务端图片如何设计view并赋予rotationEffect?

String(validatingUTF8:) 和 String(utf8String:) 之间有区别吗?

关于变量的视图的 SwiftUI 生命周期

任何使 ScrollView 像 List 一样执行更灵活的修饰符?

SwiftUI:从存储在 observableObject 中的数组中删除对象时查看崩溃

Vapor, fluent 使用 PostgreSQL 保存/创建复杂模型

swift : 具有类型和值的枚举常量

如何使用 Swift 将文本文件逐行加载到数组中?

无法将 NSAttributedString.DocumentAttributeKey 类型的值转换为 .DocumentReadingOptionKey

swift中的匿名类

在这个例子中美元符号有什么作用?