我尝试将视图渲染为图像,但是,文本不会渲染为环绕,尽管在常规视图中显示为这种方式。我尝试了一个具有UISscreen边界的maxWidth的框架,这将不会使文本溢出,但它会压缩它,留下一行文本被“.”切断。
外观:
它生成的图像:
应包含的文本:
Text(data.postContent)
.font(.callout)
.multilineTextAlignment(.leading)
.padding(.horizontal) //, 15
.foregroundColor(Color(hex: 0x050505))
字符串
图像生成扩展:
extension View {
var asImage: UIImage {
let controller = UIHostingController(rootView: self.edgesIgnoringSafeArea(.top))
let view = controller.view
let targetSize = controller.view.intrinsicContentSize
print(targetSize)
view?.bounds = CGRect(origin: CGPoint(x: 0, y: 0), size: targetSize)
view?.backgroundColor = .clear
let format = UIGraphicsImageRendererFormat()
format.scale = 3
let renderer = UIGraphicsImageRenderer(size: targetSize, format: format)
return renderer.image { _ in
view?.drawHierarchy(in: controller.view.bounds, afterScreenUpdates: true)
}
}
型
}
1条答案
按热度按时间4nkexdtk1#
而不是设置
maxWidth
,设置idealWidth
为我工作。字符串
产生了一个大小为400*167的图像。Playground预览:
的数据
我还尝试重新创建屏幕截图中显示的视图:
型
这产生了一个大小为400x219.5的图像。Playground预览:
的