Как добиться такой анимации с текстом-заполнителем в UIKit?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Как добиться такой анимации с текстом-заполнителем в UIKit?

Сообщение Anonymous »


Изображение

Это код, который я использую для этого:

Код: Выделить всё

import UIKit

class ViewController: UIViewController, UISearchBarDelegate {

var placeholderIndex = 0
var placeholderTexts = ["Text 1", "Text 2", "Text 3"]
var searchBar: UISearchBar!

override func viewDidLoad() {
super.viewDidLoad()

searchBar = UISearchBar()
searchBar.placeholder = "Search...." // Set initial placeholder
searchBar.searchBarStyle = .prominent
searchBar.sizeToFit()
searchBar.isTranslucent = true
searchBar.delegate = self
searchBar.backgroundImage = UIImage()
searchBar.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(searchBar)

Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(updatePlaceholder), userInfo: nil, repeats: true)

NSLayoutConstraint.activate([
searchBar.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 20),
searchBar.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
searchBar.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
searchBar.heightAnchor.constraint(equalToConstant: 70)
])
}

@objc func updatePlaceholder() {
let nextPlaceholderLabel = UILabel(frame: CGRect(x: 0, y: -searchBar.frame.height, width: searchBar.frame.width, height: searchBar.frame.height))
nextPlaceholderLabel.text = placeholderTexts[placeholderIndex]
nextPlaceholderLabel.textAlignment = .center
nextPlaceholderLabel.font = searchBar.searchTextField.font
nextPlaceholderLabel.textColor = searchBar.searchTextField.textColor
searchBar.addSubview(nextPlaceholderLabel)

UIView.animate(withDuration: 0.5, animations: {
nextPlaceholderLabel.frame.origin.y = 0
nextPlaceholderLabel.alpha = 1.0
self.searchBar.layoutIfNeeded()
}) { _ in
self.searchBar.placeholder = self.placeholderTexts[self.placeholderIndex]
nextPlaceholderLabel.removeFromSuperview()
}

placeholderIndex = (placeholderIndex + 1) % placeholderTexts.count
}
}
Функция updatePlaceholder() должна была обеспечить эту анимацию, однако мой результат выглядит примерно так:
Изображение

Какие изменения мне нужно здесь сделать?
Заранее спасибо

Подробнее здесь: https://stackoverflow.com/questions/782 ... t-in-uikit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»