是否有任何方法可以获得闪存屏幕效果,例如在按需拍摄屏幕截图时为某个NSView获取的效果?我的问题不是flashing screen programatically with Swift (on 'screenshot taken')的重复,因为我需要osx的解决方案,而不是ios,方法也不同。
答案 0 :(得分:2)
这样的事情可能会起作用
func showScreenshotEffect() {
let snapshotView = UIView()
snapshotView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(snapshotView)
let constraints:[NSLayoutConstraint] = [
snapshotView.topAnchor.constraint(equalTo: view.topAnchor),
snapshotView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
snapshotView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
snapshotView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
]
NSLayoutConstraint.activate(constraints)
snapshotView.backgroundColor = UIColor.white
UIView.animate(withDuration: 0.2, animations: {
snapshotView.alpha = 0
}) { _ in
snapshotView.removeFromSuperview()
}
}
答案 1 :(得分:1)
实现这一目标的方法是创建一个与屏幕尺寸相同的新UIView,并使用黑色,将其添加到视图的子视图中,然后将alpha动画设为零(播放持续时间以实现完成后从superview中删除视图。
我在很多项目中都使用过这种技术,它就像一个魅力。您可以使用视图的背景颜色来自定义闪光灯的外观。