Pea*_*oon 0 core-graphics ios swift swiftui
当我使用 UIGraphicsImageRenderer 将 SwiftUI 视图导出到图像时,iOS 15 会生成奇怪的顶部填充。它在 iOS 14.x 上运行良好。任何人都知道为什么?

事实证明这是iOS 15的一个真正的问题。
我在 Twitter 上发布了同样的问题,并已通过可行的解决方案进行了回复。
解决方案就在这个要点中
为了完整起见,我将要点发布在这里,但所有功劳都归功于其作者(而不是我):
//
// View+Snapshot.swift
//
// Created by Vinzius on 2021-11-06.
//
import SwiftUI
import UIKit.UIImage
import UIKit.UIGraphicsImageRenderer
extension View {
func snapshot() -> UIImage? {
// Note: since iOS 15 it seems these two modifiers are required.
let controller = UIHostingController(
rootView: self.ignoresSafeArea()
.fixedSize(horizontal: true, vertical: true)
)
guard let view = controller.view else { return nil }
let targetSize = view.intrinsicContentSize
if targetSize.width <= 0 || targetSize.height <= 0 { return nil }
view.bounds = CGRect(origin: .zero, size: targetSize)
view.backgroundColor = .clear
let renderer = UIGraphicsImageRenderer(size: targetSize)
return renderer.image { _ in
view.drawHierarchy(in: controller.view.bounds, afterScreenUpdates: true)
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
758 次 |
| 最近记录: |