мигающий экран программно с помощью 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.

  • Как получить доступ к UIButton через тег в Swift
  • Местное уведомление не отображается при попадании в область
  • Как передать форму типа mat4 в пользовательский шейдер (SCNProgram) в Swift?
  • Создание объекта Facebook Open Graph с использованием Swift
  • Как прокручивать изображения влево и вправо, когда оно отображается на большом изображении
  • SKAction applyForce не работает?
  • SpriteKit: найти всех потомков SKNode определенного класса?
  • В чем разница между переменной swift и функцией при использовании закрытия в переменной?
  • Как я могу найти UIView для конкретного UITabBarItem?
  • Уведомление не приходит через консоль Firebase
  • CollectionViewController.reloadData () с данными из Parse Server
  • Interesting Posts

    Чтение двоичного QR-кода с AVFoundation

    Как я могу препятствовать тому, чтобы содержимое в Xamarin Forms ScrollView застревало при изменении ориентации?

    Отображение изображения или UIImage с простым CALayer

    Выборочно use_framework! в кокоаподах

    В UITableView, лучший способ отменить операции GCD для ячеек, которые ушли с экрана?

    Завершение, поскольку нет системного приложения?

    Facebook SDK 4.7 Обработка ошибок входа в систему

    добавить кнопку внутри текстового вида

    Как изменить цвет фона UIButton на клик в UITableviewCell?

    Как эффективно получать один столбец с помощью CoreData

    Храните аппаратную клавиатуру (bluetooth) от переопределения ввода в iOS 8

    iOS TapGestureRecognizer ест двойной кран для numberOfTapsRequired = 1

    MobileSubstrate – проверка того, какой пакет объекта находится в

    Авторезизация маски программно vs Interface Builder / xib / nib

    Swift 2 – Разделение массива на словарь с ключами от A до Z

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.