小编iAl*_*x11的帖子

SwiftUI 中的富文本视图

我正在尝试在 SwiftUI 中做一个简单的笔记应用程序,我想知道是否有任何库可以提供简单的富文本视图,允许用户以粗体、斜体、删除线、下划线等书写。

我尝试过LEOTextView,但它有很多错误,我想看看是否有 100% SwiftUI 的方法来实现这一点,这样它会更容易与我的项目集成。我对 UIKit 的了解也不是很多,所以如果用 SwiftUI 制作的话,添加更多功能会更容易。

抱歉,如果这是一个愚蠢的问题,并提前致谢。

TL;DR:我只想要这样的东西 在此输入图像描述

我想这将是起点

import SwiftUI

// first wrap a UITextView in a UIViewRepresentable
struct TextView: UIViewRepresentable {
    @Binding var text: String

    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }

    func makeUIView(context: Context) -> UITextView {

        let textView = UITextView()
        textView.delegate = context.coordinator
        return textView
    }

    func updateUIView(_ uiView: UITextView, context: Context) {
        uiView.text = text
    }

    class Coordinator : NSObject, UITextViewDelegate {

        var parent: TextView

        init(_ …
Run Code Online (Sandbox Code Playgroud)

ios textkit swiftui

9
推荐指数
1
解决办法
6159
查看次数

使 TabView 在 SwiftUI 上不透明会在顶部产生一个新视图

大家好。我正在创建一个简单的 SwiftUI 应用程序,我希望我的应用程序的 TabView 具有自定义背景而不是半透明的。

为了实现这一点,我使用UITabBar.appearance().backgroundColor = Colorand UITabBar.appearance().isTranslucent = false,它应该完全做到这一点,是的,它使栏不透明,但不是为栏提供我选择的颜色,而是在选项卡栏顶部生成一个新视图,该视图不是“不应该在那里,显然以前不存在。

不改变标签栏的透明度和颜色 不改变标签栏颜色

更改标签栏的透明度和颜色 更改标签栏颜色

您可以注意到出现的新视图。我想这是一个问题,isTranslucent因为当我删除它时,新视图消失了。

有没有办法可以更改颜色并使条形图不透明并且不显示该视图?

任何帮助表示赞赏。提前致谢。

我的代码

SceneDelegate(仅更改颜色部分)

UITabBar.appearance().isTranslucent = false
UITabBar.appearance().backgroundColor = UIColor(named: "backgroundColor")
Run Code Online (Sandbox Code Playgroud)

标签视图

struct TabController: View {
    @State private var selection = 0

    var body: some View {
        TabView(selection: $selection) {
            HomePageView()
                .tabItem {
                    Image(systemName: "house.fill")
                        .font(.title)
                }
                .tag(0)

            Text("Second View")
                .font(.title)
                .tabItem {
                    Image(systemName: "bell.fill")
                        .font(.title)
                }
                .tag(1)
        }
            .edgesIgnoringSafeArea(.top)
    }
}
Run Code Online (Sandbox Code Playgroud)

uitabview uitabbar ios swift swiftui

8
推荐指数
2
解决办法
5753
查看次数

在 SwiftUI (Xcode 12) 中折叠侧边栏

我正在尝试利用 SwiftUI 2.0 的新多平台项目模板在 SwiftUI 中做一个简单的应用程序,我希望像许多其他应用程序一样添加折叠侧边栏的选项。

我尝试添加一个布尔状态变量来控制侧边栏是否应该显示,但这不起作用,因为然后主视图变为半透明(我猜这是因为 macOS 认为侧边栏现在是主视图)。

有没有办法在 SwiftUI 中本地实现这一点? 请注意,我使用的是 macOS Big Sur、Xcode 12 和 SwiftUI 2.0

提前致谢。

我的代码

内容视图.swift

import SwiftUI

struct ContentView: View {

    #if os(iOS)
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass
    #endif
    
    @ViewBuilder var body: some View {
        #if os(iOS)
        if horizontalSizeClass == .compact {
            TabController()
        } else {
            SidebarNavigation()
        }
        #else
        SidebarNavigation()
            .frame(minWidth: 900, maxWidth: .infinity, minHeight: 500, maxHeight: .infinity)
        #endif
    }
    
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .previewLayout(.sizeThatFits) …
Run Code Online (Sandbox Code Playgroud)

macos sidebar swift swiftui

8
推荐指数
1
解决办法
4360
查看次数

使用 SwiftUI 在 macOS 中更改列表的突出显示颜色

我正在尝试使用 SwiftUI 为 macOS 制作一个简单的应用程序,我想添加一个侧边栏。我已经设法完美地制作了一个,但问题是我找不到改变List组件高亮颜色的方法。

如您所见,所选项目是红色的,但我希望它是灰色的,就像在 Finder 等大多数应用程序中一样。

总之,有没有办法使用 SwiftUI 更改 macOS 中列表的突出显示颜色?

请注意我没有使用 Catalyst

提前致谢

我的代码

SidebarView.swift

struct SidebarViewItem: View {

    let text: String
    let image: String

    var body: some View {
        HStack {
            if image == "Folder" || image == "Tray" {
                Image(image)
                .resizable()
                    .frame(width: 18, height: 15)
            } else if image == "Star" {
                Image(image)
                .resizable()
                    .frame(width: 20, height: 18)
            } else {
                Image(image)
                .resizable()
                    .frame(width: 20, height: 20)
            }
            Text("\(text)")
        } …
Run Code Online (Sandbox Code Playgroud)

macos swiftui

7
推荐指数
1
解决办法
437
查看次数

SwiftUI中的自定义模式转换

我正在尝试使用SwiftUI重新创建iOS 11/12 App Store 。假设“故事”是在点击卡片时显示的视图。

我已经完成了卡片的制作,但是现在遇到的问题是如何制作动画以显示“故事”。

由于我不擅长解释,因此这里有一个gif:

Gif 1 Gif 2

我曾考虑过将整个卡片做成PresentationLink,但是“故事”显示为模态,因此它不会覆盖整个屏幕,也不会做我想要的动画。

最相似的是NavigationLink,但这使我不得不添加NavigationView,卡的显示就像另一页一样。

我实际上不在乎它是PresentationLink还是NavigationLink或其他任何东西,只要它可以动画并显示“故事”即可。

提前致谢。

我的代码:

卡速

struct Card: View {
    var icon: UIImage = UIImage(named: "flappy")!
    var cardTitle: String = "Welcome to \nCards!"
    var cardSubtitle: String = ""
    var itemTitle: String = "Flappy Bird"
    var itemSubtitle: String = "Flap That!"
    var cardCategory: String = ""
    var textColor: UIColor = UIColor.white
    var background: String = ""
    var titleColor: Color = .black
    var backgroundColor: Color = .white

    var body: …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

6
推荐指数
2
解决办法
966
查看次数

完全移动到其他视图并且不允许在 SwiftUI 中返回

我正在使用 SwiftUI 开发一个简单的 iOS 应用程序,其中包含两个视图:aLogInView()HomeView().

我想要的非常简单:当用户单击登录按钮时,LogInView()我希望应用程序隐藏LogInView()并显示HomeView()全屏,而不是像模态那样并且不允许用户返回。

这可以通过 Swift 和 UIKit 中的 Storyboards 轻松完成,有没有办法用 SwiftUI 做到这一点?

任何帮助表示赞赏。提前致谢。

我的代码:

登录查看

struct LogInView: View {
    var body: some View {
        VStack {
            Text("Welcome to Mamoot!")
                .font(.largeTitle)
                .fontWeight(.heavy)
            Text("We are glad to have you here.")
            Text("Please log in with your Mastodon or Twitter account to continue.")
                .multilineTextAlignment(.center)
                .lineLimit(4)
                .padding()
            Spacer()
            FloatingTextField(title: "Username", placeholder: "Username", width: 300, type: "Username")
            FloatingTextField(title: …
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

6
推荐指数
1
解决办法
2236
查看次数

减少 SwiftUI 各部分之间的表单间距

我正在尝试使用 SwiftUI 制作一个笔记应用程序,并且我想显示类似于Apollo Reddit 应用程序的笔记。

\n\n

它显示帖子的方式没有什么特别的,它只是使用类似于列表的界面显示帖子GroupedListStyle(),但各部分之间的间距较小。

\n\n

我尝试了很多技巧来减少这个间距,但似乎都不起作用。

\n\n

长话短说

\n\n

我有这个在此输入图像描述

\n\n

我想要这个:\n在此输入图像描述

\n\n

任何帮助表示赞赏。提前致谢!

\n\n

这是我的代码

\n\n
import SwiftUI\n\nstruct NotesView: View {\n\n    let array = [\n        Note(title: "Mi pana miguel letra", content:\n        """\n        [Intro: Keyan JRN & Producer Tag]\n        El pana Miguel, yah, ey\n        El pana Miguel, yah, ey (Snorkatje)\n        Mi pana, mi pana, yeah\n        Mi pana,\xe2\x80\x85mi\xe2\x80\x85pana, yeah\n        Mi pana,\xe2\x80\x85mi pana, yeah, eh-eh\n        Uh-uh-uh-uh-uh-uh\n\n        [Estribillo]\n        Ha-ha-hace un rato\xe2\x80\x85conoc\xc3\xad al pana …
Run Code Online (Sandbox Code Playgroud)

ios swiftui swiftui-list swiftui-form

6
推荐指数
1
解决办法
4952
查看次数

Pygame:如何将图像添加到矩形?

我正在 Pygame 上制作自己的游戏,我想将图像添加到矩形而不是彩色矩形。

我知道如何向 pygame 添加图像,但我想知道是否有某种方法可以添加图像并使用 Pygame.rect 属性,例如 usrect.centerYrect.centerX

有人知道怎么做吗?

python pygame

5
推荐指数
1
解决办法
2万
查看次数

避免在 SwiftUI 中设置按钮样式

我正在使用 Apple 的 SwiftUI 框架创建一个 iOS 应用程序。因为我需要检测用户是否点击了屏幕的特定区域,所以我显然使用了一个按钮。

问题是该区域包含一个图像和一个文本,并且当按钮自动为其内容赋予蓝色时,图像也被着色,因此它不是图像,而是一个蓝色圆角矩形。

据说一张图片值一千字,我不擅长解释,这里有一个图形演示会发生什么:

按钮外(无按钮样式) 没有按钮样式

按钮内部(带按钮样式) 带按钮样式

发生这种情况是因为按钮正在添加.foregroundColor(.blue)到图像中。

如何避免/禁用按钮向其组件添加样式?

编辑:这是我的按钮代码:

ContentView.swift

Button(action: {/* other code */}) {
                    PackageManagerRow(packageManager: packageManagersData[0])
                }
Run Code Online (Sandbox Code Playgroud)

PackageManagerRow.swift

struct PackageManagerRow : View {
    var packageManager : PackageManager

    var body: some View {
        VStack {
            HStack {
                Image(packageManager.imageName)
                    .resizable()
                    .frame(width: 42.0, height: 42.0)
                Text(verbatim: packageManager.name)
                Spacer()
                Image(systemName: "checkmark")
                    .foregroundColor(.blue)
                    .opacity(0)
            }.padding(.bottom, 0)
            Divider()
                .padding(.top, -3)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

5
推荐指数
2
解决办法
3124
查看次数

在SwiftUI中使用TabView时NavigationView无法正确显示

大家好。我正在开发一个显示一些鸣叫的简单SwiftUI应用程序。它具有一个带两个视图的选项卡视图:将显示推文的主页和一个辅助视图。

问题在于主页上有一个NavigationView。如果我选择仅显示主页,则一切似乎都正确,但是当我从显示TabView并向下滚动时,NavigationView感觉有点奇怪。

由于我不擅长解释,因此这里有一些图片:

应该是这样 应该是这样

但是就是这样 但是就是这样

我想添加.edgesIgnoringSafeArea(.top),但是NavigationView现在被该缺口隐藏了,并且没有效果。

有什么办法可以使NavigationView像第一个图像一样显示?

任何帮助表示赞赏。提前致谢。

我的密码

HomePageView

struct HomePageView: View {

    var body: some View {
        NavigationView {
            List {
                //tweet code
            }
            .navigationBarTitle("Your feed")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

TabView

struct TabController: View {
    @State private var selection = 0

    var body: some View {
        TabView(selection: $selection){
            HomePageView()
                .tabItem {
                    VStack {
                        Image(systemName: "house.fill")
                            .font(.title)
                    }
                }
                .tag(0)
            Text("Second View")
                .font(.title)
                .tabItem {
                    VStack {
                        Image(systemName: "bell.fill")
                            .font(.title)
                    }
                } …
Run Code Online (Sandbox Code Playgroud)

tabview swift swiftui ios-navigationview

5
推荐指数
1
解决办法
481
查看次数

在 SwiftUI 中更改 UIView 背景颜色

大家好。我正在使用 SwiftUI 创建一个简单的 iOS 应用程序,我想将视图的背景颜色更改为我拥有的自定义背景颜色。

这是非常容易做到的事情,但如果不使用 ZStacks 或类似的解决方法,似乎在 SwiftUI 中是不可能实现的,例如,如果您使用 List,则无法实现。

我想更改视图的颜色,而不是使用带有自定义颜色的 ZStack,然后将其余的视图放在它上面。我UIView.appearance().backgroundColor = color在初始化我的视图时尝试使用,但随后所有视图都被隐藏并且屏幕填充了所选的颜色。

由于我不擅长解释,这里有一些描述问题的图像:

无颜色变化 无颜色变化

随着颜色变化 随着颜色变化

我的代码

import SwiftUI

struct TabController: View {
    @State private var selection = 0

    init() {
        UIView.appearance().backgroundColor = UIColor(named: "backgroundColor")
    }

    var body: some View {
        TabView(selection: $selection) {
            HomePageView()
                .tabItem {
                    Image(systemName: "house.fill")
                        .font(.title)
                }
                .tag(0)

            Text("Second View")
                .font(.title)
                .tabItem {
                    Image(systemName: "bell.fill")
                        .font(.title)
                }
                .tag(1)
        }.edgesIgnoringSafeArea(.top)
    }
}
Run Code Online (Sandbox Code Playgroud)

ios swift swiftui

5
推荐指数
1
解决办法
8130
查看次数

在上下文菜单 SwiftUI 中显示不同的视图

我正在 SwiftUI 中开发 Mastodon 客户端,我希望允许用户从上下文菜单中查看帖子的预览,就像许多其他应用程序一样。

我知道我可以在 UIKit 中实现这一点,但我还没有看到如何在 SwiftUI 中实现。

例如,假设我有两个视图:CompactView 和 ExpandedView。CompactView 由Image和组成Text,行数限制为 2,因此每隔一行都被隐藏。ExpandedView 也是由 anImage和 a组成Text,但文本的行数限制为 20,以便显示所有帖子内容。

如果用户用力触摸 CompactView,我想在上下文菜单中显示 ExpandedView 而不是 CompactView。我怎样才能实现这个目标?

struct ContentView: some View {

    var body: some View {
        List(0 ..< 5) {
            CompactView()
        }
    }
}

struct CompactView: some View {

    var body: some View {
        HStack {
            Image("profile")
            Text(/*Post content goes here*/)
                .lineLimit(2)
        }
            .contextMenu {
                Button("Report", action: {})
            }
    }
}

struct ExpandedView: some …
Run Code Online (Sandbox Code Playgroud)

beta contextmenu ios swift swiftui

4
推荐指数
1
解决办法
2874
查看次数

SwiftUI Preview Canvas 因核心数据而崩溃

这可能是一个非常愚蠢的问题,所以提前抱歉。

我正在使用核心数据和 SwiftUI,我正在尝试制作一个简单的应用程序来存储笔记,但我似乎无法让预览工作。该应用程序在模拟器上运行良好,但在预览画布上崩溃。我已经阅读了很多 Reddit 和 StackOverflow 的问题,但没有一个与我的问题有关。

我已经将context变量传递给我的视图,并且我 100% 确定它不是因为崩溃报告说的,因为Persistent store migration failed, missing mapping model它说。我知道它说它需要迁移,但我没有更改任何数据模型(它是一个全新的项目),并且该应用程序在模拟器上运行良好,所以我不确定这是否真的是崩溃的原因。

我能想到的就是 SwiftUI 的预览画布可能与其他项目共享相同的数据库,并且存在冲突(这很有意义,因为我还有其他项目也使用核心数据,也是在 SwiftUI 中制作的,并共享名称一些实体)。

我在使用 Realm 时遇到了同样的问题,我通过在使用预览画布时删除 Realm 数据库文件来解决这些问题,因此每次运行都会清空数据库,我没有任何问题。这是一个好方法吗?我应该这样做吗?

我会展示我的代码,但它实际上只是一个ForEach遍历名为Note.

core-data ios swift swiftui

0
推荐指数
1
解决办法
566
查看次数