ClimbBar 1.7.1

ClimbBar 1.7.1

Keisuke Yamagishi 维护。



ClimbBar 1.7.1

  • 作者:
  • keisuke

ClimbBar

概述

iOS 库,可以扩展具有可滚动元素(如 UITableView 和 UIWebView)的 View。

如示例应用中所示,滚动条会隐藏导航栏。

提示

当在 Xcode13.2 或更高版本以及 iOS 15.2 或更高版本的 iOS 上运行时,UINavigationController 的 UINavigationBar 可能无法正常工作。因此,您可能需要使用 UINavigationBar 或 UIView 等。

github 页面构建 状态
结果 build

Gif

CocoaPods

pod 'ClimbBar'

git clone

通过SSH:对于那些打算经常直接提交代码的人来说,通过SSH克隆可能会提供更好的体验(需要上传SSH密钥到GitHub)

$ git clone [email protected]:keisukeYamagishi/ClimbBar.git

通过https:对于只读检查源代码的人,HTTPS是更好的选择

$ git clone https://github.com/keisukeYamagishi/ClimbBar.git

示例代码

override func loadView() {
        super.loadView()
        title = "ViewController"
        let statusBarHeight = UIApplication.statusBarHeight
        let toHeaderBottom = statusBarHeight + (navigationController?.barHeight ?? 0)
        let conf = Configuration(range: statusBarHeight ... toHeaderBottom)

        climbBar = ClimbBar(configurations: conf,
                            scrollable: tableView)

        climbBar.emit { [weak self] state in
            guard let self = self else { return }
            self.navigationBar.setAlpha(alpha: CGFloat(state.progress))
            let navigtionFrame = CGRect(x: 0,
                                        y: state.originY,
                                        width: self.view.frame.size.width,
                                        height: 44)
            self.navigationBar.frame = navigtionFrame
        }
    }
extension UIApplication {
    static var statusBarFrame: CGRect {
        UIApplication.shared.connectedScenes
            .filter { $0.activationState == .foregroundActive }
            .map { $0 as? UIWindowScene }
            .compactMap { $0 }
            .first?
            .windows
            .filter { $0.isKeyWindow }.first?
            .windowScene?
            .statusBarManager?
            .statusBarFrame ?? .zero
    }

    static var statusBarHeight: CGFloat {
        statusBarFrame.size.height
    }
}