Я пытаюсь продублировать этот индикатор UITabBarController в нижней части значка изображения на панели вкладок. Индикатор следует за выбранной вкладкой и интерактивно перемещается под текущую выбранную вкладку. Я искал на Github, но не нашел похожего. Я хотел бы получить какие-либо советы о том, как я могу приступить к созданию аналогичного указателя, который перемещается в интерактивном режиме, или если кто-нибудь знает какие-либо подобные библиотеки.
Я создал анимированный индикатор с неявной анимацией CALayer
. Фактический процесс превращения этого в настраиваемую панель вкладок немного сложнее, но, по крайней мере, вы можете использовать это в качестве справки:
import UIKit
import PlaygroundSupport
class ViewController : UIViewController {
let frame = CGRect(origin: .init(x: 0, y: 100), size: .init(width: 400, height: 100))
lazy var stackview = UIStackView(frame: frame)
let layer = CALayer()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(stackview)
self.stackview.distribution = .fillEqually
self.stackview.layer.addSublayer(layer)
for _ in 1...4 {
let v = UIView()
v.layer.borderWidth = 1
let tap = UITapGestureRecognizer(target: self, action: #selector(tapped))
v.addGestureRecognizer(tap)
self.stackview.addArrangedSubview(v)
}
self.layer.backgroundColor = UIColor.cyan.cgColor
self.layer.frame = CGRect(origin: .zero, size: .init(width: 40, height: 10))
let initialPosition = self.stackview.subviews[0].center
self.layer.position = initialPosition
}
@objc func tapped(_ sender: UITapGestureRecognizer) {
guard let v = sender.view else { return }
let center = v.center
self.layer.position = center
}
}
PlaygroundPage.current.needsIndefiniteExecution = true
PlaygroundPage.current.liveView = ViewController()
Скопируйте весь код и вставьте его в Swift Playground. Это просто анимация индикатора, соответствующая жесту тапа. Вам нужно будет включить это в свой UITabBar
.
Это выглядит великолепно, и то, что я ищу, просто нужно добавить на панель вкладок. Я начну опираться на это. Есть ли у вас какие-либо советы или подсказки для меня по внедрению этого в мою панель вкладок?
Это нетривиальная задача, и есть много руководств по этому поводу. Проверьте это: medium.com/sprinthub/…
это добавляется внутри UIViewController или UITabBarController? Я не могу заставить его работать.