【问题标题】:Custom UITabBarControlelr design自定义 UITabBarControlelr 设计
【发布时间】:2021-03-22 10:42:11
【问题描述】:

我正在尝试在标签栏图像图标的底部复制此 UITabBarController 指示器。指示器跟随选定的选项卡并在当前选定的选项卡下交互移动。我在 Github 上搜索过,但找不到类似的。如果有人知道任何类似的库,我想知道如何开始创建一个类似的交互式指示符。

【问题讨论】:

    标签: ios swift uitabbarcontroller ui-design


    【解决方案1】:

    我使用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()
    

    【讨论】:

    • 这是在 UIViewController 或 UITabBarController 里面添加的?我无法让它运行。
    • 复制整个代码并将其粘贴到 Swift Playground 中。这只是与点击手势对应的指示器的动画。您必须将其合并到您的 UITabBar 中。
    • 它看起来很棒,我需要将它添加到我的标签栏。我将开始在此基础上进行构建。关于在我的标签栏中实现这一点,您有什么建议或提示吗?
    • 这是一项不平凡的任务,有很多关于此的教程。看看这个:medium.com/sprinthub/…
    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多