【问题标题】:How to make a custom navigation bar with logo and a text in the navigation in iOS?如何在 iOS 的导航中制作带有徽标和文本的自定义导航栏?
【发布时间】:2021-04-25 21:15:11
【问题描述】:

由于我来自混合应用背景,我想在 iOS 中实现一个包含徽标和文本的 UI。下面是一个蓝色条带,其中包含“Back”和“Registration”作为标题。单击返回时,它会转到上一个控制器。我怎样才能实现这个用户界面?我尝试使用下面的给定代码:但我不确定如何进一步进行。

func addNavBarImage() {
        let navController = navigationController!
        let image = UIImage(named: "logo-signIn6.png") //Your logo url here
        let imageView = UIImageView(image: image)
        let bannerWidth = navController.navigationBar.frame.size.width
        let bannerHeight = navController.navigationBar.frame.size.height
        let bannerX = bannerWidth / 2 - (image?.size.width)! / 2
        let bannerY = bannerHeight / 2 - (image?.size.height)! / 2
        imageView.frame = CGRect(x: bannerX, y: bannerY, width: bannerWidth, height: bannerHeight)
        imageView.contentMode = .scaleAspectFit
        navigationItem.titleView = imageView
    }

下面是我想要实现的UI图。

【问题讨论】:

    标签: ios swift iphone xcode uinavigationcontroller


    【解决方案1】:

    您可以将自定义视图分配给navigationItem.titleView。这是一个非常简单的代码,用于将图像和文本分配给titleView。我鼓励您创建一个单独的视图类,在其中定义您的自定义视图,然后将其分配给titleView

    override func viewDidLoad() {
        super.viewDidLoad()
    
        let imageView = UIImageView()
        imageView.heightAnchor.constraint(equalToConstant: 30).isActive = true
        imageView.widthAnchor.constraint(equalToConstant: 30).isActive = true
    
        let titleLabel = UILabel()
        titleLabel.text = "Your title"
    
        let stackView = UIStackView(arrangedSubviews: [imageView, titleLabel])
        stackView.spacing = 5
        stackView.alignment = .center
    
        // This will assing your custom view to navigation title. 
        navigationItem.titleView = stackView
    }
    

    【讨论】:

    • 谢谢,下面的蓝条呢?我应该在故事板中设计它吗? “蓝条”
    • 是的,您可以在情节提要中设计“蓝条”,但必须手动处理后退操作。另一个注意事项:您的问题的另一个解决方案是您没有显示导航栏,而是使用自定义视图(假导航视图)。它的优点是您不受导航栏给定高度的限制。但这只是一个方面,它确实取决于您的需求。隐藏导航栏:stackoverflow.com/questions/29209453/…
    猜你喜欢
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-17
    • 2016-08-22
    • 2011-09-04
    • 2015-08-12
    相关资源
    最近更新 更多