SwiftUI - Catalyst 半透明侧边栏

Posted

技术标签:

【中文标题】SwiftUI - Catalyst 半透明侧边栏【英文标题】:SwiftUI - Catalyst translucent sidebar 【发布时间】:2021-04-16 18:21:50 【问题描述】:

目标是在 Mac Catalyst 上制作一个半透明的侧边栏。

下面的代码给出了一个不透明的侧边栏(图 1)。

在 Mac(不是催化剂)上,侧边栏看起来不错(图 2)。

是否可以在 Mac Catalyst 上设置半透明侧边栏?

import SwiftUI

struct ContentView: View 
    var body: some View 
        
        NavigationView 
            
            //sidebar
            List 
                Label("Books", systemImage: "book.closed")
                Label("Tutorials", systemImage: "list.bullet.rectangle")
         
            
            .background(Color.clear)

            .listStyle(SidebarListStyle())
            
            //content
            Text("Sidebar")
            .navigationTitle("Sidebar")
        
        
        
    

【问题讨论】:

有什么消息吗?我有同样的问题。 不,似乎只有 UIKit 可以做到,作为苹果文档...developer.apple.com/documentation/uikit/mac_catalyst/… 你找到什么了吗? 是的,只是 UIKit ???? 添加背景模糊修改器怎么样?我试过但没用... 【参考方案1】:

从 AppDelegate main 开始,然后按照 Apple 的教程 re: UISplitViewController "Apply a Translucent Background to Your Primary View Controller"。

https://developer.apple.com/documentation/uikit/mac_catalyst/optimizing_your_ipad_app_for_mac

在将 UISplitViewController 包装在 UIViewControllerRepresentable 中时,我无法获得半透明效果,但确实获得了全高侧边栏。

【讨论】:

【参考方案2】:

我发现即使没有将 ListStyle 指定为 SidebarListStyle(),在侧边栏视图上使用 .background(Color.clear) 也可以实现半透明背景。为我在 Xcode 13.1 中工作

struct ContentView: View 
    var body: some View 
        NavigationView  // without wrapping to NavigationView it won't work
            List  // can be VStack or HStack
                Text("Hello, world!")
                  .padding()
            
            .listStyle(SidebarListStyle()) // works with other styles
        Text("")
    
  


struct YourApp: App 
   var body: some Scene 
      WindowGroup 
        ContentView()
            .toolbar 
                Button 
                    
                 label: 
                    Image(systemName: "gear")
                

            
            .background(Color.clear) // 3 <-- MUST HAVE!
      
   

【讨论】:

欢迎来到 Stack Overflow。请阅读How to Answer。在没有解释的情况下转储代码很少有帮助。

以上是关于SwiftUI - Catalyst 半透明侧边栏的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI Tabview 修复

SwiftUI 中具有不同列的侧边栏

在 UISplitViewController 中使用 SwiftUI 列表侧边栏

博客园引入半透明的看板娘

从 SwiftUI 中的导航栏中删除后退按钮文本

iOS - 导航栏设置半透明或取消半透明