我有一个UIView canvas
,当我按下{{1}时,我想在相机胶卷上保存它的屏幕截图和它的子视图(这是彩色的形状) }}。这适用于模拟器,但它不会以我喜欢的方式生成图像:
我希望快照看起来与它在iPhone屏幕上的外观完全一样。因此,如果形状的一部分超出屏幕,快照将仅捕获屏幕上可见的部分形状。我还希望快照的大小为UIBarButton shareBarButton
,基本上是视图的大小,除了略短的高度:
canvas
如果有人能够说出我在制作快照时遇到的错误,那将非常感激!
我的代码:
canvas = UIView(frame: CGRectMake(0, 0, view.bounds.height, view.bounds.height-toolbar.bounds.height))
答案 0 :(得分:1)
在第一个例子中,我会尝试快照UIWindow以查看是否能解决您的问题:
这是我使用的UIWindow扩展程序(不专门用于相机工作) - 试试这个。
import UIKit
extension UIWindow {
func capture() -> UIImage {
UIGraphicsBeginImageContextWithOptions(self.frame.size, self.opaque, UIScreen.mainScreen().scale)
self.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
我称之为:
let window: UIWindow! = UIApplication.sharedApplication().keyWindow
let windowImage = window.capture()