小编Geo*_*e_E的帖子

SwiftUI Sheet 不更新变量

如果我通过选择另一个项目来更改值,我会尝试将一个项目传递到工作表。即使我从未使用第一项调用工作表,工作表仍会继续显示第一项。

这是一个错误还是我做错了什么?

锻炼列表.swift

import SwiftUI

struct WorkoutList: View {
    private var workouts = workoutData
    @State var showWorkoutDetails = false

    var body: some View {
        ScrollView(.horizontal, showsIndicators: false) {
            HStack(spacing: 20) {
                ForEach(workouts) { workoutCard in
                    GeometryReader { geometry in
                        Button(action: {self.showWorkoutDetails.toggle()}) {
                            WorkoutCardView(workout: workoutCard)
                                .rotation3DEffect(Angle(degrees: Double((geometry.frame(in: .global).minX - 30) / -30)), axis: (x: 0, y: 10, z: 0))
                                .sheet(isPresented: self.$showWorkoutDetails) {
                                    WorkoutDetails(workout: workoutCard)
                                }
                        }
                    }
                    .frame(width:246, height: 360)

                }
            }
        .padding(30)
        }
    }
}

private let workoutData = [ …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

拖放在 macOS 上不起作用,但在 iOS 上起作用(使用 Catalyst)

onDrag使用SwiftUI进行拖放onDrop在 iOS 设备上效果非常好。然而,对于 macOS,我什至根本无法拖动视图。

对于 iOS 来说它可以工作,对于 macOS 则不行,这看起来很奇怪。该应用程序是使用 Catalyst 制作的,目标为 iOS 13.4。

即使对于一些基本的东西,它也适用于其中一个而不是另一个:

struct ContentView: View {

    var body: some View {
        Text("Hello World!")
            .onDrag { NSItemProvider(object: "Hello 2" as NSString) }
    }
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?这是一个错误吗?

macos ios swift swiftui mac-catalyst

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

在 SwiftUI 中使用分段式选取器在两个页面之间滑动

我有一个Pickerwith.pickerStyle(SegmentedPickerStyle())使其成为分段控件。我想让页面在之间平滑滑动,而不是使用条件语句替换视图。

这是我迄今为止所做的 gif:

我做了什么

这是到目前为止的代码(由 控制if,而不是在不同页面之间切换):

struct AuthView: View {

    @State private var authPath = 0

    /* ... */

    var body: some View {
        VStack {
            Picker(selection: $authPath, label: Text("Authentication Path")) {
                Text("Log In").tag(0)
                Text("Sign Up").tag(1)
            }
            .pickerStyle(SegmentedPickerStyle())

            Spacer()

            if authPath == 0 {
                LogInView(/* ... */)
            } else {
                SignUpView(/* ... */)
            }

            Spacer()
        }
        .padding()
        .background(Color("Color.Background").edgesIgnoringSafeArea(.all))
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要类似的东西UIPageViewController。如果有 SwiftUI 版本或好的替代方案,那确实会有帮助。

但是,如果我确实需要使用 UIKit UIViewRepresentable,我不知道如何使用 SwiftUI 来实现它。

ios uipageviewcontroller swift swiftui uiviewrepresentable

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

ToolbarItem 中按钮中图像的可访问性

accessibilityLabel(_:)我正在将辅助功能添加到我的 SwiftUI 应用程序中,直到我在将 an 添加到Buttona 中时遇到问题ToolbarItem。这是一些示例代码:

struct ContentView: View {
    
    var body: some View {
        NavigationView {
            Text("Content")
                .accessibilityElement()
                .accessibilityLabel("Content label") // This is here just to show Voice Control is working
                .navigationTitle("Test")
                .toolbar {
                    // Comment parts out below, depending on what you want to test
                    ToolbarItem(placement: .navigationBarTrailing) {
                        // What I want, but doesn't work:
                        // (Also tried adding the label to either the button
                        // label or the whole button itself, neither …
Run Code Online (Sandbox Code Playgroud)

accessibility swift swiftui voice-control

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

使用 SwiftUI 离开视图时,如何以编程方式使列表的 editMode 处于非活动状态?

给定一个带有 EditButton() 的列表视图,如果正在编辑该视图(用户点击“编辑”按钮),当用户离开该视图时,如何以编程方式禁用编辑模式?(例如,与 iPhone 上的“电话”应用程序中的“收藏夹”视图类似的行为)

struct ContentView2: View {
    @State var fruits = ["Apple", "Banana"]

    var body: some View {
        NavigationView {
            List {
                ForEach(fruits, id: \.self) { fruit in
                    Text(fruit)
                }
                .onDelete { _ in
                    print("Delete")
                }
            }
            .toolbar {
                EditButton()
            }
        }
        .onDisappear {
            // make List's editMode be .inactive; how?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

在 Swift 5.5 中,在不支持并发的函数中等待两个任务完成的正确方法是什么?

我有一个应用程序,可以对给定的字符串进行一些处理,这在 2Task秒内完成。在此期间我正在显示动画。当这些Task完成后,我需要隐藏动画。下面的代码可以工作,但看起来不太好。我相信有更好的方法来做到这一点?

let firTask = Task {
    /* Slow-running code */
}

let airportTask = Task {
    /* Even more slow-running code */
}

Task {
    _ = await firTask.result
    _ = await airportTask.result
    
    self.isVerifyingRoute = false
}
Run Code Online (Sandbox Code Playgroud)

task async-await swift swift-concurrency

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

SwiftUI - 表单选择器 - 如何防止导航回所选内容?

我正在使用 SwiftUI 实现 Form 和 Picker。有一个问题,当我选择选取器选项时,它会自动导航回表单屏幕,如何使其保持在选择屏幕中?

代码:

struct ContentView: View {
    @State private var selectedStrength = "Mild"
    let strengths = ["Mild", "Medium", "Mature"]

    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker("Strength", selection: $selectedStrength) {
                        ForEach(strengths, id: \.self) {
                            Text($0)
                        }
                    }
                }
            }
            .navigationTitle("Select your cheese")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

实际的:

在此输入图像描述

预期:(来自 Iphone 设置的示例)

在此输入图像描述

forms picker swift swiftui

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

SwiftUI 将 HStack 与不同大小的元素对齐

我希望构建一个 HStack,其中包含 3 个元素,一个在左侧,一个在中间,一个在右侧。中间元素应始终位于中心,但由于左侧和右侧元素是动态的,因此长度可能不同,因此中间元素会根据侧面元素的大小而被推动(见下图)。我正在使用垫片和填充物,但需要一些可以自动调整垫片尺寸的东西。有谁知道有什么方法可以做到这一点?

请参阅下面所附的代码:

VStack(alignment: .leading){
                    Text(item.itemName)
                        .padding(1)
                        .padding(.horizontal, 20)
                    
                    HStack{
                        //Representative item code
                        Text("123454")
                            .padding(.horizontal, 20)
                        Spacer()
                        
                        Text(item.itemQuantity)
                            //.position(x: 100)

                        Spacer()
                        Text(item.itemPrice)
                            .padding(.horizontal, 20)
                    }

                }
Run Code Online (Sandbox Code Playgroud)

显示未对齐的 hstack 项目的图像

swift swiftui

4
推荐指数
2
解决办法
6057
查看次数

SKShapeNode 和 SKSpriteNode 之间的性能差异

如果我想绘制一个简单的红色矩形,我应该使用 anSKShapeNode还是 an SKSpriteNode?性能(渲染速度)有何差异?

是否有任何例外(例如应用透明度,或者创建physicsBody)?

我知道两者的主要目的是什么,但我不确定哪个在绘制简单的红色正方形方面性能更好。

代码: 在此输入图像描述

// Shape
let myShape = SKShapeNode(rectOf: CGSize(width: 100, height: 100))
myShape.fillColor = .red
myShape.strokeColor = .clear

// Sprite
let mySprite = SKSpriteNode(color: .red, size: CGSize(width: 100, height: 100))
Run Code Online (Sandbox Code Playgroud)

performance rendering ios sprite-kit swift

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

无法在 Xcode 10 中使用源代码编辑器扩展

使用在 Mojave 中运行的 Xcode 10,我无法让简单的测试源编辑器扩展工作。我以前可以在 Xcode 9 High Sierra 下执行此操作。我创建了一个简单的源编辑器扩展。然后我运行它,但没有显示在首次亮相的 Xcode(黑色图标)编辑器菜单下。也不会显示在“系统”>“扩展”列表中。重新启动也没有帮助。我尝试从 Mac App Store 下载 LineX 扩展,但它也不起作用。

xcode swift xcode-extension macos-mojave

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