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

问题描述 投票:0回答:1
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()
            }

这是我的代码,我正在此处向照片添加文本

文本对齐 - 对于文本对齐,我已经尝试过,但没有按预期工作。

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

swift photo
1个回答
0
投票

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

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

pinIcon.isHidden = true
contentLabel.isHidden = true

...
let image = UIGraphicsGetImageFromCurrentImageContext()
return image
© www.soinside.com 2019 - 2024. All rights reserved.