func screenshot() -> UIImage? {
var imageSize = CGSize.zero
let orientation = UIApplication.shared.statusBarOrientation
if orientation.isPortrait {
imageSize = UIScreen.main.bounds.size
} else {
imageSize = CGSize(width: UIScreen.main.bounds.size.height, height: UIScreen.main.bounds.size.width)
}
UIGraphicsBeginImageContextWithOptions(imageSize, false, 0)
guard let context = UIGraphicsGetCurrentContext() else {
return nil
}
for window in UIApplication.shared.windows {
context.saveGState()
context.translateBy(x: window.center.x, y: window.center.y)
context.concatenate(window.transform)
context.translateBy(x: -window.bounds.size.width * window.layer.anchorPoint.x, y: -window.bounds.size.height * window.layer.anchorPoint.y)
if orientation == .landscapeLeft {
context.rotate(by: CGFloat(Double.pi / 2))
context.translateBy(x: 0, y: -imageSize.width)
} else if orientation == .landscapeRight {
context.rotate(by: -CGFloat(Double.pi / 2))
context.translateBy(x: -imageSize.height, y: 0)
} else if orientation == .portraitUpsideDown {
context.rotate(by: CGFloat(Double.pi / 2))
context.translateBy(x: -imageSize.width, y: -imageSize.height)
}
if window.responds(to: #selector(UIWindow.drawHierarchy(in:afterScreenUpdates:))) {
window.drawHierarchy(in: window.bounds, afterScreenUpdates: true)
}else {
window.layer.render(in: context)
}
context.restoreGState()
}
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
Swift 截取當(dāng)前屏幕(包含導(dǎo)航欄)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。