我正在尝试截取视觉模糊视图的屏幕截图。
根据文档
许多效果需要宿主UIVisualEffectView的窗口的支持。尝试仅拍摄UIVisualEffectView的快照将导致不包含效果的快照。要拍摄包含UIVisualEffectView的视图层次结构的快照,必须拍摄包含UIVisualEffectView的整个UIWindow或UIScreen的快照。
所以我有以下等级
因此,我正在拍摄完整的UIView
屏幕截图,并尝试裁剪viewScreenShot
的矩形,但我无法做到这一点
这是我到目前为止尝试过的
@IBAction func btnTapped(_ sender: Any) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0)
// self.viewScreenShot.layer.render(in: UIGraphicsGetCurrentContext()!)
self.view.drawHierarchy(in: CGRect(x: view.frame.origin.x, y: view.frame.origin.y, width: view.frame.width, height: view.frame.height), afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
let cgIImage = image?.cgImage?.cropping(to: CGRect(origin: viewScreenShot.frame.origin, size: viewScreenShot.frame.size))
let newImage = UIImage(cgImage: cgIImage!, scale: 1.0, orientation: UIImage.Orientation.up)
(self.view.viewWithTag(90) as? UIImageView)?.image = newImage
UIGraphicsEndImageContext()
}
输出
任何帮助将不胜感激
答案 0 :(得分:0)
我知道了。
这就是我所做的
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css">
<div class="row">
<div class="col-md-6 float-left">
<p>Funds (Add/Reduce)</p>
</div>
<div class="col-md-6 mb-3 pl-0 float-left ac-set">
<div class="input-group add-reduce-div">
<div class="input-group-prepend">
<div class="dropdown">
<button class="btn btn-dropdown dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></button>
<div class="dropdown-menu add-reduce" aria-labelledby="dropdownMenuButton">
<a class="dropdown-item" href="#"><i class="fas fa-plus funds-icons"></i> Add</a>
<a class="dropdown-item" href="#"><i class="fas fa-minus funds-icons"></i> Reduce</a>
</div>
</div>
</div>
<input type="number" class="form-control universal-input add-reduce-input">
<div class="input-group-append">
<button type="button" class="btn btn-dropdown" disabled="disabled">Add</button>
</div>
</div>
</div>
</div>
有两个问题是由于规模引起的
所以
我替换了
@IBAction func btnTapped(_ sender: Any) {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0)
// self.viewScreenShot.layer.render(in: UIGraphicsGetCurrentContext()!)
self.view.drawHierarchy(in: CGRect(x: view.frame.origin.x, y: view.frame.origin.y, width: view.frame.width, height: view.frame.height), afterScreenUpdates: true)
let image = UIGraphicsGetImageFromCurrentImageContext()
// FULL
let cgIImage = image?.cgImage?.cropping(to: CGRect(origin: CGPoint(x: viewScreenShot.frame.origin.x * UIScreen.main.scale , y: viewScreenShot.frame.origin.y * UIScreen.main.scale), size: CGSize(width: viewScreenShot.bounds.width * UIScreen.main.scale, height: viewScreenShot.bounds.height * UIScreen.main.scale)))
let newImage = UIImage(cgImage: cgIImage!, scale: UIScreen.main.scale, orientation: UIImage.Orientation.up)
(self.view.viewWithTag(90) as? UIImageView)?.image = newImage
UIGraphicsEndImageContext()
}
与
let newImage = UIImage(cgImage: cgIImage!, scale: 1.0, orientation: UIImage.Orientation.up)
和
通过乘以 let newImage = UIImage(cgImage: cgIImage!, scale: UIScreen.main.scale, orientation: UIImage.Orientation.up)
UIScreen.main.scale
输出