iOS 11:大标题的 UINavigationBar 高度(模仿 Apple Music 应用)

2024-04-23

我试图模仿UINavigationBar由 Apple Music 应用程序使用(日期显示在大标题上方)。

我知道 Apple Music 应用程序不使用该标准UINavigationBar of ios11 /questions/tagged/ios11但标题视图是UICollectionView.

我也想用标准UINavigationBar of ios11 /questions/tagged/ios11因为标题文本的大小调整功能。

我可以添加custom date label查看大的层次结构title view,我的代码如下所示:

    self.title = "Large Title"
    navigationController?.navigationBar.prefersLargeTitles = true

    guard let navigationBar = navigationController?.navigationBar else { return }

    // Create label
    let label = UILabel()
    label.text = "Small Title"

    // Add label to subview hierarchy
    for subview in navigationBar.subviews {
        let stringFromClass = NSStringFromClass(subview.classForCoder)
        if stringFromClass.contains("UINavigationBarLargeTitleView") {
            subview.addSubview(label)
        }
    }

    // Add label constraints
    label.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
        label.leftAnchor.constraint(equalTo: navigationBar.leftAnchor, constant: 16.0),
        label.bottomAnchor.constraint(equalTo: navigationBar.bottomAnchor, constant: -50.0),
        label.heightAnchor.constraint(equalToConstant: 20.0),
        label.widthAnchor.constraint(equalToConstant: 200.0)
        ])

The custom date label放置正确,但我无法设置高度UINavigationBar到额外的height标签的。

Since ios11 /questions/tagged/ios11 UINavigationBar使用自动布局,因此设置框架将不再像以前的 iOS 版本那样起作用。

系统添加的自动布局约束。默认情况下,它的优先级为 1000,因此向标签添加附加约束不会产生任何效果或导致自动布局冲突。

有什么提示可以在“大标题”上方显示“小标题”而不滚动吗?


你可以玩一点UILabel在 - 的里面UINavigationBarLargeTitleView例如更改其插图并减小字体大小,这是一个示例:

        // Create label
        labelSubtitle.text = "Small Title"
        labelSubtitle.backgroundColor = UIColor.clear
        labelSubtitle.textColor = UIColor.searchBarTextColor(dark: theme)
        labelSubtitle.font = UIFont.systemFont(ofSize: 14)

        // Add label to subview hierarchy
        for subview in self.navigationController!.navigationBar.subviews {
            let stringFromClass = NSStringFromClass(subview.classForCoder)
            if stringFromClass.contains("UINavigationBarLargeTitleView") {

                let largeSubViews = subview.subviews
                for sbv in largeSubViews
                {
                    if let lbl = sbv as? UILabel
                    {
                        lbl.padding = UIEdgeInsets(top: 4, left: 0, bottom: 0, right: 0)
                        lbl.setNeedsLayout()
                    }
                }
                subview.addSubview(labelSubtitle)
            }
        }

        self.navigationController!.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 30, weight: .bold)]

        labelSubtitle.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            labelSubtitle.leftAnchor.constraint(equalTo: self.navigationController!.navigationBar.leftAnchor, constant: 20.0),
            labelSubtitle.bottomAnchor.constraint(equalTo: self.navigationController!.navigationBar.bottomAnchor, constant: -37.0),
            labelSubtitle.heightAnchor.constraint(equalToConstant: 20.0),
            labelSubtitle.widthAnchor.constraint(equalToConstant: 200.0)
            ])

为了更改插图,我使用了本文中发布的扩展:向 UILabel 添加空间/填充 https://stackoverflow.com/a/44145859/3770254

结果如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 11:大标题的 UINavigationBar 高度(模仿 Apple Music 应用) 的相关文章

  • iOS 13.1 AVAudio 播放器崩溃

    当我跟踪问题时 我的应用程序在 iOS 13 1 上崩溃 然后发现应用程序崩溃是因为AVAudioPlayer 以下是我的播放器设置 if let wrongURL Bundle main url forResource wrongAudi
  • iOS:不明确的属性合成行为。继承相关

    我在用着AppCode它标记了一个非常大的项目代码中的一个有趣的情况 预ARC 子类定义并合成一个称为委托的属性 实际上属性声明已经被注释掉了 但是 synthesize delegate delegate 声明被留下了 该代码可以编译 大
  • 如何在 Swift 2.0 中将结构保存到 NSUserDefaults

    我有一个名为Jar我想将它们的数组保存到 NSUserDefaults 中 这是 jar 结构代码 struct Jar let name String let amount Int init name String amount Int
  • 如何在 App Store Connect 上 AB 测试您的 iOS 应用程序图标?

    根据文档 您现在应该能够在 iOS 上对应用程序图标进行 AB 测试 但是 我不知道该怎么做 在这里 它说您需要包含一个支持上传备用图标的资产目录 https help apple com app store connect devb53f
  • 更改流程布局的 itemSize 后单元格大小未更新

    在我的应用程序中 我有一个全屏分页集合视图 每个单元格也需要全屏 因此集合视图布局的项目大小需要与视图控制器的视图边界大小相同 为此 在viewDidLayoutSubviews我只是设置了项目大小 它就按预期工作了 当我呈现这个屏幕时 v
  • 我正在使用“DrawLinearGradient”函数来绘制渐变线。但我使用的两种颜色并没有在直线上等分

    我正在使用 DrawLinearGradient 函数来绘制渐变线 但我使用的两种颜色并没有在线条中等分 CGColorSpace colorSpace CGColorSpace CreateDeviceRGB CGColor colors
  • 防止 iOS 上的反射(objc/运行时)

    我正在开发一个处理敏感数据的静态库 使用该库的开发人员必须不能在该库上使用反射 在Android上 我们通过开发一个来解决这个问题aar文件与service并运行service进入单独的进程 当服务运行到另一个进程中时 开发人员不能使用反射
  • iOS 11 中导航栏中的 UIButton 无法识别点击

    我有一个UIButton在位于顶部的导航栏中UIImage and a UILabel 它在 iOS 10 中运行良好 但现在在 iOS 11 中它无法识别我的任何点击 IBAction outlet 我尝试将水龙头出口移至栏按钮项目 但这
  • 如何在iOS SDK中使用语音识别? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道 SIRI 服务没有公共 API 但是有没有简单的语音识别 API 因此 如果我有一个文本字段并且
  • 如何将不同层的核心动画一个接一个地链接起来?

    我有一个启用分页的scrollView和N个页面 它们是作为scrollView的子视图的UIView 我正在尝试执行以下操作 用户滚动到第 n 页 此时 之前添加到第 n 页的 7 个 CALayers 即 到页面 scrollView
  • 自定义 UITableViewRowAnimation 或持续时间

    我有一个用户可以拖动的应用程序UITableViewCells从一TableView到另一个 我通过在用户触摸的 UITableViewCell 顶部渲染一个 虚拟 单元格来实现此目的 并禁用 真实 单元格 然后我在目标中插入一个新行UIT
  • 找不到映射模型(Cocoa 错误 134140)

    基本上 我有一个版本xcdatamodel我正在从 V2 迁移到 V3 我创建了一个Mapping Model具有自定义策略 一旦PersistenStoreCoordinator试图完成它的工作 我打了一个Cocoa错误号134140 找
  • clickedButtonAtIndex 方法未被调用

    当用户点击按钮时UIAlertView the clickedButtonAtIndex应该调用方法 但是 它没有 in the h我已经打电话给UIAlertView协议 interface RechercherViewControlle
  • 使用未解析的运算符 <=

    我正在尝试使用 Swift 3 for 循环 但没有成功 这是我所拥有的 for assumedPayRate Double in 0 25 lt billRate where assumedPayRate 0 25 On the lt 它
  • 将图像从资产库复制到应用程序文件夹

    我有一个 UIImagePickerController 我想将选定的图像保存到我的应用程序中 我可以通过获取当前的 UIImage 并保存它 通过创建文件 来轻松做到这一点 但我更愿意直接将文件从库复制到我的文件夹中 现在我有了所选图像的
  • iOS 15 中 UITableView 部分之间的额外空间

    UITableView显示没有节页脚的多个节 节之间有额外的空间 Xcode 的视图调试器显示它不是视图 而只是一个空白区域 就我而言 这种行为是不受欢迎的 添加 1 0 0 0 高度页脚并没有帮助 更改表视图也不行style 这是示例代码
  • 错误 ITMS-90168:“您上传的二进制文件无效。”

    我正在尝试将应用程序上传到 App Store 它包含一个 watchOS 2 应用程序 watchOS 1 扩展和一些 iOS 扩展 我不明白为什么会发生这种情况 当我使用 Xcode 7 的 上传到 App Store 功能 或使用应用
  • 错误:将构建上传到 iTunes Connect 时,Swift 支持无效

    我正在提交 TestFlight 发行版的第一个版本 但收到以下错误 位码已关闭 其他答案似乎相当旧 所以我想我会在 2018 年重新询问 无效的 Swift 支持 文件 libswiftDarwin dylib libswiftMetal
  • UIDocumentsInteractionController 显示 iBooks 但不打开它

    我的 UIDocumentsInteractionController 正在工作 提供一个带有 iBooks 按钮的操作表 但是当我单击该按钮时 它只是关闭并且不会将我带到 iBooks 这是我的代码 NSString filenamePa
  • UIImageView 没有调用drawRect

    我的 IB 中有一个 UIImageView 我用一个方法 drawRect 创建了 UIImageView 的子类 implementation UIImageViewLine void drawRect CGRect rect NSLo

随机推荐