如何在 Swift 中增加自定义 UINavigationBar 类的高度

鹤芒

更新:我最终隐藏了默认导航栏并添加了一个与导航栏相同的 UIView。这听起来可能不太好,但与其修补,不如说UINavigationBar这很好。


这是我UINavigationBar创建的自定义类,用于增加应用程序中导航栏的高度。它对我不起作用。这是代码

class PPBaseNavigationBar: UINavigationBar {

    ///The height you want your navigation bar to be of
    static let navigationBarHeight: CGFloat = 83.0

    ///The difference between new height and default height
    static let heightIncrease: CGFloat = navigationBarHeight - 44

    override init(frame: CGRect) {
        super.init(frame: frame)
        initialize()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        initialize()
    }

    private func initialize() {
        let shift = PPBaseNavigationBar.heightIncrease/2.0

        ///Transform all view to shift upward for [shift] point
        self.transform = CGAffineTransform(translationX: 0, y: -shift)
    }

    override func layoutSubviews() {
        super.layoutSubviews()

        let shift = PPBaseNavigationBar.heightIncrease/2.0

        ///Move the background down for [shift] point
        var classNamesToReposition: Array<String>?
        if #available(iOS 10.0, *) {
            classNamesToReposition = ["_UIBarBackground"]
        } else {
            classNamesToReposition =  ["_UINavigationBarBackground"]
        }

        for view: UIView in self.subviews {
            if (classNamesToReposition?.contains(NSStringFromClass(view.classForCoder)))! {
                let bounds: CGRect = self.bounds
                var frame: CGRect = view.frame
                frame.origin.y = bounds.origin.y + shift - 20.0
                frame.size.height = bounds.size.height + 20.0
                view.frame = frame
            }
        }
    }

    override func sizeThatFits(_ size: CGSize) -> CGSize {
        let amendedSize:CGSize = super.sizeThatFits(size)
        let newSize:CGSize = CGSize.init(width: amendedSize.width, height: PPBaseNavigationBar.navigationBarHeight)
        return newSize;
    }
}

除了override func sizeThatFits(_ size: CGSize) -> CGSize {...}不确定之外所有方法都被调用,为什么?

多伦多
It is not permissible to change the navigation bar object or modify its bounds, frame, or alpha values directly. 

直接修改导航栏对象

您可以使用自定义视图作为导航栏。根据您的要求自定义视图(例如更改高度)并将默认导航栏隐藏为

self.navigationController?.setNavigationBarHidden(true, animated: false)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中自定义uibutton的类?

来自分类Dev

如何在Swift中创建自定义UITableViewCell类?

来自分类Dev

如何更改自定义UINavigationBar类的标签文本

来自分类Dev

UINavigationBar的自定义高度或UINavigationBar的替代高度

来自分类Dev

UINavigationBar的自定义高度或UINavigationBar的替代高度

来自分类Dev

在自定义UINavigationController类中创建UINavigationBar时出错

来自分类Dev

如何在Swift中为自定义类创建相等性测试?

来自分类Dev

如何使用XIB自定义UINavigationBar?

来自分类Dev

Swift中的自定义类集群

来自分类Dev

Swift中的自定义类集群

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

来自分类Dev

自定义UINavigationBar,中心具有自定义高度

来自分类Dev

如何在android中自定义ListView的高度?

来自分类Dev

如何在Swift中的UINavigationBar中更改Edit / Done按钮标题

来自分类Dev

如何在Flutter中针对不同屏幕尺寸在自定义类中设置应用栏的高度?

来自分类Dev

Swift中的UINavigationBar文本颜色

来自分类Dev

在Swift中更改UINavigationBar字体

来自分类Dev

如何使用NSUserDefaults在Swift中存储自定义类的数组?

来自分类Dev

初始化后如何更新自定义类中的 UILabel 文本 (Swift 3)

来自分类Dev

如何在 iOS Swift 中使用聚类解析自定义标记图标

来自分类Dev

如何创建uiimageview的自定义类-Swift

来自分类Dev

如何创建uiimageview的自定义类-Swift

来自分类Dev

Swift 3 /如何将Root的UINavigationBar与UIViewController的UINavigationBar重叠

来自分类Dev

如何在Swift中获取UILabel的高度?

来自分类Dev

如何在Laravel 5.1中引用自定义类?

来自分类Dev

如何在Rails中自定义类名的单数

来自分类Dev

如何在MVC中绑定自定义模型类

来自分类Dev

如何在Java中创建自定义JButton类?

Related 相关文章

  1. 1

    如何在Swift中自定义uibutton的类?

  2. 2

    如何在Swift中创建自定义UITableViewCell类?

  3. 3

    如何更改自定义UINavigationBar类的标签文本

  4. 4

    UINavigationBar的自定义高度或UINavigationBar的替代高度

  5. 5

    UINavigationBar的自定义高度或UINavigationBar的替代高度

  6. 6

    在自定义UINavigationController类中创建UINavigationBar时出错

  7. 7

    如何在Swift中为自定义类创建相等性测试?

  8. 8

    如何使用XIB自定义UINavigationBar?

  9. 9

    Swift中的自定义类集群

  10. 10

    Swift中的自定义类集群

  11. 11

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  12. 12

    如何在Swift中为自定义结构和类更改默认的嵌入式字符串

  13. 13

    自定义UINavigationBar,中心具有自定义高度

  14. 14

    如何在android中自定义ListView的高度?

  15. 15

    如何在Swift中的UINavigationBar中更改Edit / Done按钮标题

  16. 16

    如何在Flutter中针对不同屏幕尺寸在自定义类中设置应用栏的高度?

  17. 17

    Swift中的UINavigationBar文本颜色

  18. 18

    在Swift中更改UINavigationBar字体

  19. 19

    如何使用NSUserDefaults在Swift中存储自定义类的数组?

  20. 20

    初始化后如何更新自定义类中的 UILabel 文本 (Swift 3)

  21. 21

    如何在 iOS Swift 中使用聚类解析自定义标记图标

  22. 22

    如何创建uiimageview的自定义类-Swift

  23. 23

    如何创建uiimageview的自定义类-Swift

  24. 24

    Swift 3 /如何将Root的UINavigationBar与UIViewController的UINavigationBar重叠

  25. 25

    如何在Swift中获取UILabel的高度?

  26. 26

    如何在Laravel 5.1中引用自定义类?

  27. 27

    如何在Rails中自定义类名的单数

  28. 28

    如何在MVC中绑定自定义模型类

  29. 29

    如何在Java中创建自定义JButton类?

热门标签

归档