Swift - UIView的无损截图
效果
源码
// // UIView+ScreensShot.swift // Swift-Animations // // Created by YouXianMing on 16/9/5. // Copyright © 2016年 YouXianMing. All rights reserved. // import UIKit extension UIView { /** Get the view's screen shot, this function may be called from any thread of your app. - returns: The screen shot's image. */ func screenShot() -> UIImage? { guard frame.size.height > 0 && frame.size.width > 0 else { return nil } UIGraphicsBeginImageContextWithOptions(frame.size, false, 0) layer.renderInContext(UIGraphicsGetCurrentContext()!) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }
使用
// // ViewController.swift // ScreenShot // // Created by YouXianMing on 16/9/5. // Copyright © 2016年 YouXianMing. All rights reserved. // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let redView = UIView(frame: CGRectMake(40, 40, 200, 200)) redView.backgroundColor = UIColor.redColor().colorWithAlphaComponent(0.5) view.addSubview(redView) let imageView = UIImageView(image: redView.screenShot()) view.addSubview(imageView) } }