UIView的快照没有正确缩放?

时间:2016-01-04 16:28:16

标签: ios swift uiview uiimage uiscreen

我有一个UIView canvas,当我按下{{1}时,我想在相机胶卷上保存它的屏幕截图和它的子视图(这是彩色的形状) }}。这适用于模拟器,但它不会以我喜欢的方式生成图像:

我希望快照看起来与它在iPhone屏幕上的外观完全一样。因此,如果形状的一部分超出屏幕,快照将仅捕获屏幕上可见的部分形状。我还希望快照的大小为UIBarButton shareBarButton,基本上是视图的大小,除了略短的高度:

canvas

如果有人能够说出我在制作快照时遇到的错误,那将非常感激!

我的代码:

canvas = UIView(frame: CGRectMake(0, 0, view.bounds.height, view.bounds.height-toolbar.bounds.height))

1 个答案:

答案 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()