мигающий экран программно с помощью Swift («снят снимок экрана»)

В целях преобразования примера Objective C здесь: Как программно запускать экран? Я написал следующий код:

func blinkScreen(){ var wnd = UIApplication.sharedApplication().keyWindow; var v = UIView(frame: CGRectMake(0, 0, wnd!.frame.size.width, wnd!.frame.size.height)) wnd!.addSubview(v); v.backgroundColor = UIColor.whiteColor() UIView.beginAnimations(nil, context: nil) UIView.setAnimationDuration(1.0) v.alpha = 0.0; UIView.commitAnimations(); } 

Но я не уверен, где я должен добавить код удаления UIView v (на какое-то событие, которое выполняется, когда анимация заканчивается … но как?). Также – мое преобразование правильное?

2 Solutions collect form web for “мигающий экран программно с помощью Swift («снят снимок экрана»)”

Вы были близки к решению. Но вы можете сделать это еще проще с завершающими блоками в быстром:

 if let wnd = self.view{ var v = UIView(frame: wnd.bounds) v.backgroundColor = UIColor.redColor() v.alpha = 1 wnd.addSubview(v) UIView.animateWithDuration(1, animations: { v.alpha = 0.0 }, completion: {(finished:Bool) in println("inside") v.removeFromSuperview() }) } 

Как вы видите, сначала я проверяю, есть ли представление, а затем я просто устанавливаю границы представления на флэш-представление. Одним из важных шагов является установка цвета фона. В противном случае вы не увидите никакого эффекта вспышки. Я установил backgroundColor в красный цвет, так что вы можете увидеть его проще в этом примере. Но вы можете, конечно, использовать любой цвет.

Затем забава начинается с части UIView.animateWithDuration . Как вы видите, я заменил ваш startAnimation и т. Д. startAnimation блоком. Он читается так: сначала вы устанавливаете продолжительность анимации на 1 секунду. После этого вы запускаете анимацию, установив альфа на 0. Затем, после завершения анимации, я удаляю представление из своего супервизора.

Это все, что вам нужно, чтобы воспроизвести эффект скриншота.

UIView предоставляет методы класса для установки делегата анимации и предоставления селекторов для начала анимации и завершения.

Используйте следующие методы:

 setAnimationDelegate(delegate:) setAnimationWillStartSelector(selector:) setAnimationDidStopSelector(selector:) 

Кроме того, рассмотрите методы анимации UIView, которые позволят вам обеспечить закрытие, которое будет вызываться при завершении:

 animateWithDuration(duration: delay: options: animations: completion:) 

В рамках функции, которую вы предоставляете для didStopSelector, вы можете удалить UIView.

  • objc : pthread_rwlock_rdlock failed (11)
  • Изменение / масштабирование UIImageView - SWIFT
  • Как просто удалить старые данные ядра и перестроить новый?
  • Что должно произойти, когда необъявленный пользователь нажмет кнопку покупки восстановления в iOS?
  • Создать программную программу UIwebview reload + goback / forward
  • Как создать данные структуры, глобально доступные в одноэлементном классе в swift 2.0 (iOS)?
  • ios10, Swift 3 и Firebase Push Notifications (FCM)
  • Проверка того, что пользователь изменил разрешение на использование Facebook для приложения
  • cellForRowAtIndexPath никогда не вызывается в UITableViewController
  • Пользовательский UITableViewCell, созданный из .xib, не показывает
  • Как отобразить абзац текста на раскадровке XCode?
  • Как получить видимый / текущий viewcontroller в классе non-viewcontroller? стриж
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.