добавить анимацию в UIview, созданный программно - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь построить UILabel.

Но я хочу анимировать, когда этот ярлык всплывает

, где я должен оживить ярлык ??

Вот мойкод

static func setupView(view: UIView){
       let networkStatusView = UILabel(frame: CGRect(x: 0, y: 40, width: view.bounds.width, height:50))
        networkStatusView.tag = 20
        networkStatusView.text = "offline"
        networkStatusView.font = UIFont.boldSystemFont(ofSize: 18)
        networkStatusView.translatesAutoresizingMaskIntoConstraints = false
        networkStatusView.textAlignment = .center
        networkStatusView.backgroundColor=UIColor.green
        networkStatusView.layer.borderColor = UIColor.white.cgColor

        UIView.animate(withDuration: 0.5) {
        view.addSubview(networkStatusView)
        }
        view.layoutIfNeeded()    
    }

Ответы [ 3 ]

0 голосов
/ 11 февраля 2019

Просто чтобы сделать его похожим на падение с вершины

Присвойте View начальную высоту: 0

и анимируйте его как:

view.addSubview(networkStatusView)
    UIView.animate(withDuration: 0.5) {
         networkStatusView.frame.size.height = 50
        view.layoutIfNeeded()
    }
0 голосов
/ 11 февраля 2019

Чтобы помочь визуализировать, как работает UIView.animate;

Подумайте о состоянии, в котором находится ваша UILabel, перед вызовом метода UIView.animate.Например, на основе ответа qtngo * networkStatusView будет вложенным представлением для текущего представления ViewController и не будет видимым, поскольку для альфа установлено значение 0.

Теперь с-inблок анимации:

UIView.animate(withDuration: 0.5) { networkStatusView.alpha = 1.0 view.layoutIfNeeded() }

Разработчик говорит системе анимировать networkStatusView в течение следующих 0,5 секунд и изменить альфа представления с 0 на1.0, следовательно, делает его видимым.

Надеюсь, это поможет.

0 голосов
/ 11 февраля 2019

Функция addSubview не является анимационной.Предполагая, что вам нужен эффект постепенного появления, вы должны изменить последние 4 строки на:

view.addSubview(networkStatusView)
networkStatusView.alpha = 0.0
UIView.animate(withDuration: 0.5) {
    networkStatusView.alpha = 1.0
    view.layoutIfNeeded()
}

Надеюсь, это поможет

...