SwiftUI 中带有背景图像的透明导航栏

2024-02-26

我有一个自定义导航栏,它是一个图像,后跟标题文本。图像设置为缩放以填充,但没有完全填满导航栏。因此,您可以看到图像未覆盖的一小部分条形。我尝试将导航栏的背景颜色设置为清除,但这不起作用。有什么建议么?

struct ContentView: View {
@State private var hideBar = true

var body: some View {
    VStack {
        NavigationView {
            ZStack {
                Image("bg5").resizable().scaledToFill()

                VStack {
                    NavigationLink(destination:
                    SubView(header: "Go to subview")) {
                        Text("Go to subview")
                    }.simultaneousGesture(TapGesture().onEnded {
                       self.hideBar = false     // << show, here to be smooth !!
                    })

                    NavigationLink(destination:
                        SubView(header: "Go again")) {
                        Text("Go to subview again")
                    }.simultaneousGesture(TapGesture().onEnded {
                       self.hideBar = false     // << show, here to be smooth !!
                    })
                }
                .navigationBarTitle("")
                .navigationBarHidden(hideBar)
                .onAppear {
                    self.hideBar = true  // << hide on back
                }
            }.edgesIgnoringSafeArea([.top, .bottom])
        }
    }
}
}

struct SubView: View {
var header: String
@Environment(\.presentationMode) var presentationMode: Binding<PresentationMode>

var btnBack : some View { Button(action: {
    self.presentationMode.wrappedValue.dismiss()
    }) {
        HStack {
                Image("subheaderback").resizable().scaledToFit()
                VStack(alignment: .center) {
                    Text(self.header)
                }.frame(width: 100, height: 100)
        }
    }.buttonStyle(PlainButtonStyle())
}

var body: some View {
    ZStack {
        Image("bg5").resizable().scaledToFill()
        VStack {
            Text("blah blah")

            Text("and more blah")
        }
    }.edgesIgnoringSafeArea([.top, .bottom])
    .navigationBarBackButtonHidden(true)
    .navigationBarItems(leading: btnBack)
}
}

extension UINavigationController {
override open func viewDidLoad() {
    super.viewDidLoad()

    let appearance = UINavigationBarAppearance()
    appearance.backgroundColor = .clear
    appearance.backgroundImage = UIImage(named: "subheader")

    navigationBar.standardAppearance = appearance
    navigationBar.compactAppearance = appearance
    navigationBar.scrollEdgeAppearance = appearance
}
}

您不需要设置背景颜色,而是需要不同的配置,如下所示(使用 Xcode 11.4 / iOS 13.4 进行测试)

let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()            // << this one !!
appearance.backgroundImage = UIImage(named: "subheader")
// appearance.backgroundImageContentMode = .scaleAspectFit // if needed non-default
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI 中带有背景图像的透明导航栏 的相关文章

  • Facebook iOS 选择好友表空白

    我正在尝试将 选择的朋友 添加到我的 iOS 应用程序中 我设置了登录视图 登录后 我打开朋友选择器 但它显示为空白 我看到带有 完成 和 取消 按钮的表 但表中没有加载任何朋友 IBAction selectFriendsButtonAc
  • ios Facebook 添加 FBNativeAdView 作为子视图

    我想使用预建视图FBNativeAdView 不想自定义 FBNative 广告 如link https developers facebook com docs reference ios current class FBNativeAd
  • 启动使用 Simperium 的应用程序时 objectFromJSONString 崩溃

    我得到了一个JSON当我尝试启动使用 Simperium 框架的应用程序时崩溃 NSCFString objectFromJSONString unrecognized selector sent to instance 0x6c561a0
  • 如何快速从解析中加载图像?

    我想知道是否有人可以帮助我 我是应用程序开发的新手 我正在从我的应用程序上传图像以在解析文档的帮助下毫无问题地进行解析 let imageData UIImagePNGRepresentation scaledImage let image
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta
  • 在 iOS 8 中创建通话/双高状态栏?

    是否有调用自定义通话 双高状态栏的标准方法 如果没有 那么构建我自己的功能的最佳起点是哪里 我知道关于如何做到这一点存在一些多年的问题 但没有任何令人满意的答案 有什么新方法可以做到这一点吗 可能在 iOS 8 中 这里没有什么新鲜事 但我
  • 背景 JPanel 上的 JScrollPane 中的透明 JEditorPane

    如果我移动 JScrollPane 使其位于 JPanel 前面并部分覆盖 JPanel 则 JScrollPane 内部的 JEditorPane 会出现绘制问题 它无法正确地重新绘制 JPanel 的背景 因此 当您滚动时 您最终会遇到
  • swift 中闭包和函数作为参数的区别

    我有将近 4 年的 Objective C 经验 并且是 swift 的新手 我试图从 Objective C 的角度理解 swift 的概念 所以如果我错了 请指导我 在目标 c 中 我们有块 可以稍后异步执行的代码块 这绝对是完全合理的
  • 通过应用程序组在应用程序之间通信和保存数据

    iOS 8 昨天发布了一个有关应用程序组的新 API 以前在应用程序之间共享数据和通信有点混乱 我相信这正是应用程序组旨在纠正的问题 在我的应用程序中 我启用了应用程序组并添加了一个新组 但我找不到任何有关如何使用它的文档 文档和 API
  • 如何在 Xamarin.iOS 应用程序中创建导航?

    我习惯于与Xamarin Forms 我用 XAML 或 C 创建一个页面并导航到它 但现在这是我第一次尝试创建一个不适合的 iOS 应用程序Xamarin Forms 我在 Windows PC 上的 Visual Studio 中进行此
  • 从 plist 文件中解码数据

    我丢失了在 Macbook Air 上用 Textwrangler 编写的文本文件中的一些数据 我在扩展名为 plist 的文件中找到了其中一些 文件是用 xml 编写的 如下所示
  • SwiftUI 更新主菜单 [已解决] kludgey

    真正的问题 你如何更新mainMenu在 SwiftUI 中 它真的可以工作吗 我在 SwiftUI 中构建了一个基于 MacOS 文档的应用程序 其中包括所有内置的文件菜单命令 即关闭 保存 复制 重命名 等 在保存文档之前 我会验证结构
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • iOS:我如何知道某个属性是否符合 KVO 标准?

    In the 键值观察编程指南 https developer apple com library archive documentation Cocoa Conceptual KeyValueObserving KeyValueObser
  • Xamarin.Forms DataTemplateSelector 不适用于 iOS(未调用构造函数)

    我正在膨胀数据模板选择器 如下所示
  • iOS 键盘显示后分屏宽度

    我刚刚开始研究 Cordova 应用程序对分屏多任务处理的支持 到目前为止 该应用程序在模拟器中的 iPad 上显示和调整大小都很好 但是当我单击编辑字段并显示软件键盘时 100 宽度的值开始返回整个屏幕 而不是给出的窗口 初始显示 到目前
  • GoogleSignIn ios 附加到谷歌表格

    我目前正在开发一个 iOS 应用程序 该应用程序需要写入登录用户拥有的 Google 工作表 要登录我正在使用的用户GoogleSignInpod 并附加到我正在使用的谷歌表GoogleAPIClientForREST Sheets pod
  • 如何像谷歌日历一样将单元格的内容滚动到表格视图中的另一个单元格中?

    我希望用户界面像谷歌日历那样进入桌面视图 它在不同的行中显示相同的日期事件 但是当您向上或向下滚动时 左侧的日期也会向上向下滚动 Can you please help me how to achieve this Please take
  • 在iOS中设置框架的原点

    我正在尝试以编程方式设置框架的原点 Method1 button frame origin y 100 方法二 CGRect frame button frame frame origin y 100 我尝试了方法 1 但它不起作用 显示错
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C

随机推荐

  • 即使存在未设置为 true,Rails 验证也需要数字

    我正在尝试保存一条没有设置字段的记录 该记录在模型中具有验证数值 即使验证中不需要存在 它仍然会抛出该字段不是数字的错误 验证 validates network id numericality gt true 保存模型的代码 networ
  • 在实现 ArrayAccess 和 Iterator 的对象上使用 foreach

    有没有办法迭代实现 ArrayAccess 和 Iterator 接口的对象的键 数组访问很有魅力 但我不能在那些对象上使用 foreach 这对我有很大帮助 是否可以 到目前为止我有这样的代码
  • 如何使用 xdist 和 django_coverage_plugin 并行 pytest 运行覆盖率报告

    使用以下设置 计算出的覆盖率小于使用没有并行化的单线程的覆盖率 Coverage 仅在项目根目录中创建 1 个覆盖文件 我预计这就是问题所在 我无法确定我做错了什么 报告的覆盖范围比我简单地运行要少coverage m pytest 在单线
  • 如何使用 Gmail API 访问我拥有的 Gmail 帐户?

    我想将节点脚本作为 cronjob 运行 它使用 Gmail 的 API 来轮询我拥有的 Gmail 帐户 我正在关注这些快速入门说明 https developers google com gmail api quickstart nod
  • JTabbedPane:选项卡左侧的图标

    你好 我正在使用 nimbus 外观和感觉 并有一个带有图标和文本的选项卡窗格 现在图标出现在文本的右侧 而我想将其放在左侧 我还想在图标和文本之间添加一些间距 thanks tab组件需要自己设置 它控制选项卡标题的呈现方式 Create
  • 如何以编程方式录制IOS屏幕

    有没有办法以编程方式录制 IOS 屏幕 意味着您正在执行的任何活动 例如单击按钮 滚动表格视图 即使正在播放的视频会与其他活动一起再次捕获 尝试过这些 https www raywenderlich com 30200 avfoundati
  • 保存时检测更改 Laravel 4:Eloquent

    我正在使用 Laravel 4 框架 我正在尝试找出一种方法来显示通知 具体取决于是否save 成功与否 这是我到目前为止所拥有的 if user gt save Session flash success woohoo success e
  • 将一系列父子关系转化为层次树?

    我有一堆名称 父名称对 我想将它们变成尽可能少的层次树结构 例如 这些可能是配对 Child Parent H G F G G D E D A E B C C E D NULL 需要将其转换为层次树 D E A B C G F H 我想要的
  • 防止后退按钮关闭我的应用程序

    我在应用程序的活动中使用以下代码来防止它关闭我的应用程序 Prevent app from being killed on back Override public boolean onKeyDown int keyCode KeyEven
  • 如何在光线追踪器中移动相机?

    我目前正在研究光线追踪技术 我认为我已经做得相当不错了 但是 我还没有讨论过相机 到目前为止 我使用平面片段作为视图平面 它位于 width 2 height 2 200 and width 2 height 2 200 200只是z的固定
  • Xcode 6 Swift 代码完成不起作用

    使用 Xcode 6 GM 种子我的代码完成已停止工作 前几天还在工作 我试图让放松转场工作发挥作用 我制作了一个 Objc 头文件并将其指定为 Swift 类的头 此时 我通过 Objective c 项目完成了代码 但是 对于 Swif
  • 部署到天蓝色网站后,对路径的访问被拒绝(发生“System.UnauthorizedAccessException”类型的异常)

    我正在从 blob 下载内容并将其存储在浏览我的应用程序的用户的本地文件夹中 一切工作正常 本地没有任何问题 但部署到应用服务 Web 应用程序后 我遇到了访问被拒绝的问题 我尝试过以下选项 选项1 string pathString D
  • Delphi性能:读取数据集中某个字段下的所有值

    我们正在尝试找出一些从 TADOQuery 读取的性能修复程序 目前 我们使用 while not Q eof do begin Q next 方法循环记录 对于每条记录 我们读取每条记录的 ID 和值 并将每条记录添加到组合框列表中 有没
  • 滚动视图内部滚动视图

    我知道 Google 的人要求我们不要将 Scrollable 视图放入另一个 Scrollable 视图中 但是他们有任何官方声明指示我们不要这样做吗 试试这个 Note Here parentScrollView意味着外层ScrollV
  • Pos() 在 utf8 字符串边界内

    我希望有一个 Pos 适合用于指定源字符串内的边界 而不是让它在整个数据中执行搜索 假设我有一个 100 个字符长的字符串 我只想在 unicode utf8 字符串的第 5 个和第 20 个字符之间执行 Pos 该代码应该改编自 delp
  • MySQL - 如何在 INSERT 语句中将字符串值解析为 DATETIME 格式?

    我有一个MySQL database 其中有一列是日期类型DATETIME 我从外部应用程序获取日期 时间的字符串值 该字符串值如下所示 5 15 2012 8 06 26 AM MySQL 在 INSERT 上抛出错误 Error Inc
  • System.IO.IOException CreateHostBuilder(args).Build().Run() 中的“功能未实现”

    当我开始在 Linux Docker 容器中调试我的应用程序时 在调用时出现异常CreateHostBuilder args Build 该代码是一个相当新的 AspASP NET Core MVC 3 1 项目的一部分 I saw the
  • Nexus 存储库 3 备份

    最近我安装了Nexus 存储库 3在 OpenStack Cloud 中 我已经使用它一段时间了 我想对 Nexus 执行增量备份 从而保护我们的数据 如何对 Nexus 数据进行增量备份 Nexus 备份的过程描述于文档 https he
  • 使用负年份创建 Instant

    我正在尝试创建一个Instant基于公元前公历中的年份 这是我到目前为止所拥有的 Instant FromDateTimeOffset new DateTimeOffset 1000 10 01 0 0 0 0 new System Glo
  • SwiftUI 中带有背景图像的透明导航栏

    我有一个自定义导航栏 它是一个图像 后跟标题文本 图像设置为缩放以填充 但没有完全填满导航栏 因此 您可以看到图像未覆盖的一小部分条形 我尝试将导航栏的背景颜色设置为清除 但这不起作用 有什么建议么 struct ContentView V