如何在 iOS 和 Swift 中制作没有导航栏的快照?

How do I make a snapshot without the navigation bar in iOS with Swift?

我正在使用我在这个网站上找到的这个功能,但它保存了整个屏幕的导航栏,但没有状态栏。

func screenShotMethod() {


    let layer = UIApplication.sharedApplication().keyWindow!.layer
    let scale = UIScreen.mainScreen().scale
    UIGraphicsBeginImageContextWithOptions(layer.frame.size, false, scale);

    layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let screenshot = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    UIImageWriteToSavedPhotosAlbum(screenshot, nil, nil, nil)

    let alertSaved = UIAlertController(title: "Saved", message: "", preferredStyle: .ActionSheet)

    alertSaved.addAction(UIAlertAction(title: "Ok", style: .Default, handler: {action in

        self.view.removeGestureRecognizer(self.gesture)

    }))

    presentViewController(alertSaved, animated: true, completion: nil)

}

我需要的只是从导航栏末尾到底部截图。

如果您将尝试截屏的图层从 keyWindow 的视图更改为视图控制器的视图,则导航栏(假设您将视图控制器嵌入到导航控制器中而不是将导航栏添加为您的视图)和状态栏将从屏幕截图中省略。

let layer = view.layer

如果导航栏顶部有空白 space,您可以调整框架将其剪掉。