Есть ли способ получить эффект флэш-экрана, подобный тому, который создается при съемке снимок, по требованию, для определенного NSView? Мой вопрос не является дубликатом flashing screen programatically with Swift (on 'screenshot taken'), так как мне нужно решение для osx, а не ios, и методы разные.Как получить эффект вспышки экрана, такой как эффект захвата экрана?
0
A
ответ
1
Путем достижения этого является создание нового UIView с одинаковым размером экрана и черного цвета, добавьте его подвид вашего представления, а затем оживите альфу до нуля (поиграйте со временем, чтобы достичь желаемый эффект) после завершения удалите представление из супервизора.
Я использовал эту технику во многих своих проектах и работает как шарм. Вы можете поиграть с цветом фона для настройки внешнего вида вспышки.
1
что-то подобное может работать
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()
}
}
Возможный дубликат [мигающий экран с Swift программно (на «Снимок сделан»)] (http://stackoverflow.com/questions/28684549/flashing-screen-programatically -с-быстроногий на скриншот-принято) – Alladinian