小编nOk*_*nOk的帖子

在 SwiftUI 中显示“UIActivityViewController”

我想让用户能够共享位置,但我不知道如何UIActivityViewController在 SwiftUI 中显示。

uiactivityviewcontroller swiftui xcode11

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

如何将图像转换为 UIImage

由于 swiftUI 上的文档不是很好,但我想问一下如何将“图像”转换为“UIImage”或如何将“图像”转换为 pngData/jpgData

let image = Image(systemName: "circle.fill")
let UIImage = image as UIImage
Run Code Online (Sandbox Code Playgroud)

image uiimage swiftui

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

刷新 SwiftUI 列表

Ím 每次单击 NavLink 时都会尝试刷新此列表

NavigationView {
    List(feed.items.indices, id:\.self) { i in
        NavigationLink(destination: ListFeedItemDetail(idx: i).environmentObject(self.feed)) {
            ListFeedItem(item: self.$feed.items[i])
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该列表由环境对象内的数组组成。问题:只有当我切换到另一个选项卡或关闭我之前使用过模态视图的应用程序时它才会刷新,并且它在那里工作。(我是用 .onAppear 做到的)有什么想法吗?

例子

问题:当您点击列表中的一个项目并点击切换按钮时,EnvironmentObject 已更改,但仅当我更改选项卡并再次将其更改回来时才会反映此更改

import SwiftUI
import Combine

struct TestView: View {

    @State var showSheet: Bool = false
    @EnvironmentObject var feed: TestObject
    func addObjects() {
        var strings = ["one","two","three","four","five","six"]
        for s in strings {
            var testItem = TestItem(text: s)
            self.feed.items.append(testItem)
        }
    }

    var body: some View {
        TabView {
            NavigationView {
                List(feed.items.indices, id:\.self) { i in
                    NavigationLink(destination: …
Run Code Online (Sandbox Code Playgroud)

swiftui swiftui-list

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

在 SwiftData 中组合谓词

我正在尝试使用 and/or 组合该类型的多个谓词。以前使用 CoreData 和 NSPredicate 我只会这样做:

let predicate = NSPredicate(value: true)
let predicate2 = NSPredicate(value: false)
let combinedPred = NSCompoundPredicate(type: .or, subpredicates: [predicate, predicate2])
Run Code Online (Sandbox Code Playgroud)

是否有类似的方法可以使用 SwiftData 和 #Predicate 来做到这一点?如果没有,我如何实现一种预先创建部分条件并稍后将它们组合到谓词中的方法?

我发现将其作为表达式执行此操作的唯一方法是这样的,但这将使我的谓词长数百行

let includeOnlyFavorites = true
#Predicate { includeOnlyFavorites ? $0.isFavorite : true }
Run Code Online (Sandbox Code Playgroud)

语境:

我正在开发一个应用程序,允许用户使用快捷操作保存和查询项目。这些项目使用 SwiftData 存储并使用 EntityPropertyQuery 查询

Apple 是这样实现 Query 属性的:

static var properties = QueryProperties {
    Property(\BookEntity.$title) {
        EqualToComparator { NSPredicate(format: "title = %@", $0) }
        ContainsComparator { NSPredicate(format: "title CONTAINS %@", $0) }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将谓词与 …

predicate nspredicate swift swift-data

7
推荐指数
2
解决办法
1904
查看次数

How to convert `UIColor` to SwiftUI‘s `Color`

I want to use a UIColor as foregroundcolor for an object but I don’t know how to convert UIColor to a Color

var myColor: UIColor
RoundedRectangle(cornerRadius: 5).foregroundColor(UIColor(myColor))
Run Code Online (Sandbox Code Playgroud)

colors uicolor swift swiftui

6
推荐指数
3
解决办法
2065
查看次数

如何检测 EdgePan Gesture SwiftUI

我试图从 SwiftUI 的左侧识别 EdgePan。我知道有一些手势,但无法将它们应用于整个屏幕。(尝试使用 DragGesture)。是否可以在 SwiftUI 中实现 EdgePan?或者我如何使用 DragGesture 来做同样的事情?

gesture swift swiftui

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

使用 SwiftUI 生成二维码显示空图片

我试图在我的应用程序中生成一个二维码。问题是每当我做图片时,图片只是一个空方块。我将代码简化为基础,以尝试展示我的问题。

struct ContentView: View {
    @State var image: Image = Image(systemName: "circle.fill")

    var body: some View {
        VStack {
            image
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: 200, height: 200)
                .background(Color.green)

        }.onAppear {
            let myString = "Hello There"
            let data = myString.data(using: String.Encoding.ascii)
            guard let qrFilter = CIFilter(name: "CIQRCodeGenerator") else { return }
            qrFilter.setValue(data, forKey: "inputMessage")
            guard let qrImage = qrFilter.outputImage else { return }
            let transform = CGAffineTransform(scaleX: 10, y: 10)
            let scaledQrImage = qrImage.transformed(by: transform)
            self.image = Image(uiImage: UIImage(ciImage: scaledQrImage))
        } …
Run Code Online (Sandbox Code Playgroud)

qr-code cifilter swiftui

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

使用 CoreData 在 SwiftUI 中填充列表

我正在尝试用“FlightRecording”实体中的所有条目填充列表。但我不能使用,Text(recording.name)因为它说“NSManagedObject 没有成员‘名称’”。为什么这甚至是 NSManagedObject 而不是 'FlightRecordings' 类型的对象?

struct FlightRecorderBrowser: View {
    let flightRecordings: [FlightRecording] = FlightRecorder().fetchAllRecordings()
    var body: some View {
        NavigationView {
            List() {
                ForEach(flightRecordings, id: \.self) {recording in
                    Text(recording.name)
                }
            }

            .navigationBarTitle("Flight Recordings")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

core-data swift swiftui

3
推荐指数
1
解决办法
1221
查看次数

与其他内容一起放入 HStack 时,文本只有一行(SwiftUI 列表)

我试图显示项目列表。每一行都应该在左侧包含一个特定颜色的条纹和一个标题。这个标题有时超过一行,但只显示为一行和“...”。当我删除条纹时,它显示为多行文本。我附上了代码和两张图片以供比较

继承人我的代码:

HStack {
    Rectangle()
        .foregroundColor(poll.outcome ? .green : .red)
        .frame(width: 3)
    VStack {
        Text(poll.poll.title!).font(.headline)
            .lineLimit(2)
    }
}
Run Code Online (Sandbox Code Playgroud)

这是没有矩形的样子: 无矩形

和矩形: 无矩形

swiftui swiftui-list

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