2017-02-14 37 views
0

Есть ли способ получить эффект флэш-экрана, подобный тому, который создается при съемке снимок, по требованию, для определенного NSView? Мой вопрос не является дубликатом flashing screen programatically with Swift (on 'screenshot taken'), так как мне нужно решение для osx, а не ios, и методы разные.Как получить эффект вспышки экрана, такой как эффект захвата экрана?

+1

Возможный дубликат [мигающий экран с Swift программно (на «Снимок сделан»)] (http://stackoverflow.com/questions/28684549/flashing-screen-programatically -с-быстроногий на скриншот-принято) – Alladinian

ответ

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() 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^