【问题标题】:Custom TitleView in NavigationBarNavigationBar 中的自定义 TitleView
【发布时间】:2020-11-07 11:16:25
【问题描述】:

我正在尝试将用户的图像和名称添加到导航栏,如下所示:

我正在尝试以编程方式执行此操作,因为我的代码库不使用 xib 或情节提要(启动屏幕除外)。

下面是我的代码的简要介绍:

  guard let prof = self.profile else { return }
    let imageView = ImageView(type: .none, avatar: true, 25)
    let nameLabel = UILabel()
    nameLabel.text = prof.name
    nameLabel.numberOfLines = 0
    imageView.setImage(prof.profileImage?.imageURL)
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 300))
    view.addSubview(nameLabel)
    view.addSubview(imageView)
    nameLabel.snp.makeConstraints { make in
        make.bottom.equalToSuperview().inset(5)
        make.left.right.equalToSuperview()
    }

    imageView.snp.makeConstraints { make in
        make.bottom.equalTo(nameLabel.snp.top).offset(5)
        make.top.equalToSuperview().inset(5)
    }
    
    self.navigationItem.titleView = view

我使用SnapKit 来布置 UI,ImageView 只是一个自定义 UIImageView,它处理下载图像,有一个内置的加载指示器,一些格式化选项,并通过告诉 init 它是一个头像图像, 也请求更小尺寸的图像。

我对父视图使用 300 的高度仅作为测试,以使导航栏更高以容纳我的内容,但高度没有变化。

如果有人有办法完成此设计或类似的替代方案,我将非常感谢您提供的帮助。

编辑:不使用 SnapKit 的解决方案完全可以。

编辑:@asanli 对解决方案的描述如下:

代码在这里:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 300))
view.addSubview(nameLabel)
view.addSubview(imageView)
imageView.snp.makeConstraints { make in
    make.top.equalToSuperview().inset(10)
    make.width.height.equalTo(50)
    make.centerX.equalToSuperview()
}
nameLabel.snp.makeConstraints { make in
    make.top.equalTo(imageView.snp.bottom).offset(10)
    make.centerX.equalToSuperview()
}

【问题讨论】:

  • 为什么不简单地创建自己的视图? UINavigationBar 不会有那么多空间。
  • @PGDev 请问我自己在导航栏中的视图吗?发给我的设计要求和产品要求是需要在导航栏中。难道我自己的视图就在导航栏下方,因此不是一回事吗?

标签: ios swift uinavigationcontroller uinavigationbar uinavigationitem


【解决方案1】:

我找到了一个可以帮助你的图书馆。没用过,希望对你有帮助。

https://github.com/Pircate/EachNavigationBar

【讨论】:

  • 我实际上尝试了这个确切的答案,但似乎改变框架不再起作用了。至少现在不是几个 iOS 版本
  • 我的困惑是,很明显 iMessage 能够很好地完成这一切
  • 哦,是的,你说得对,我可以看到,虽然 iMessage 的行为在推动或按压背部时似乎有所不同。虽然我找到了一个可以帮助你的图书馆。 github.com/Pircate/EachNavigationBar我没用过,希望对你有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多