如何使诸如文本字段之类的元素连续放大然后缩小?
我有这个:
struct ContentView : View {
@State var size:Double = 0.5
var body: some View {
ZStack {
Text("Hello!")
.padding()
.scaleEffect(size)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我需要增加大小,然后在某种循环中减少它,但在 SwiftUI 中无法完成以下操作:
while true {
self.size += 0.8
sleep(0.2)
self.size -= 0.8
}
Run Code Online (Sandbox Code Playgroud) 如何通过将视图拖动到另一个视图的上方或下方来重新排列视图在 ZStack 中的位置(例如,在这种情况下,我如何通过将卡拖动到另一张卡的上方或下方来重新排列卡组中卡的顺序,以移动拖动的卡)牌组中所述牌的后面或前面)。
我希望卡片在堆栈中向上或向下拖动时更改索引,并在拖动时流畅地出现在堆栈中的每张卡片后面 - 并在鼠标向上时停留在那里。
总结:换句话说,当我向上拖动时,拖动的卡片和它上面的卡片应该切换,拖动的卡片和它下面的卡片应该在我向下拖动时切换。
我认为这与更改 ZStack 顺序struct CardView: View和DragGesture().onChanged通过评估卡被拖动的程度(可能通过查看 self.offset 值)从内部更新位置有关,但我无法弄清楚该怎么做这是一种可靠的方式。
这是我现在所拥有的:

代码:
import SwiftUI
let cardSpace:CGFloat = 10
struct ContentView: View {
@State var cardColors: [Color] = [.orange, .green, .yellow, .purple, .red, .orange, .green, .yellow, .purple]
var body: some View {
HStack {
VStack {
CardView(colors: self.$cardColors)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.position(x: 370, y: 300)
}
}
struct CardView: View {
@State var offset = CGSize.zero
@State var dragging:Bool …Run Code Online (Sandbox Code Playgroud) 我试图重新创建在Session 204中演示的SwiftUI项目,但是遇到了一些特殊的问题。
我是通过观看位于此处的会议来编写的:https : //developer.apple.com/videos/play/wwdc2019/204
这是我的代码-
ContentView.swift:
import SwiftUI
struct ContentView : View {
@ObjectBinding var store = RoomStore()
var body: some View {
NavigationView {
List {
Section {
Button(action: addRoom) {
Text("Add Room")
}
}
Section {
ForEach(store.rooms) { room in //Error: Cannot convert value of type '(Room) -> RoomCell' to expected argument type '(_) -> _'
RoomCell(room: room)
}
.onDelete(perform: delete)
.onMove(perform: move)
}
}
.navigationBarTitle(Text("Rooms") )
.NavigationBarItems(trailing: EditButton())
.listStyle(.grouped)
}
}
func addRoom() {
store.rooms.append(Room(name: …Run Code Online (Sandbox Code Playgroud) PresentationButton可以正确显示视图,但是在单击“取消”以返回到父视图时,该按钮拒绝再次显示子视图。
这是我的PresentationButton代码:
struct ContentView : View {
var body: some View {
ZStack {
PresentationButton(Text("Click to show"), destination: SomeOtherView())
.transition(.slide)
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在鼠标悬停时为单个项目设置动画。我遇到的问题是,每个项目在鼠标悬停在某个项目上时都会产生动画,而不仅仅是该特定项目。这是我所拥有的:
struct ContentView : View {
@State var hovered = false
var body: some View {
VStack(spacing: 90) {
ForEach(0..<2) {_ in
HStack(spacing: 90) {
ForEach(0..<4) {_ in
Circle().fill(Color.red).frame(width: 50, height: 50)
.scaleEffect(self.hovered ? 2.0 : 1.0)
.animation(.default)
.onHover { hover in
print("Mouse hover: \(hover)")
self.hovered.toggle()
}
}
}
}
}
.frame(minWidth:300,maxWidth:.infinity,minHeight:300,maxHeight:.infinity)
}
}
Run Code Online (Sandbox Code Playgroud)

这是我根据这个答案得到的内容。该代码当前允许用户选择一个单元格,但我无法区分选择了哪个单元格或执行任何代码来响应该选择。总之,如何根据所选单元格的名称执行代码并在单击时执行。当前单击的单元格以蓝色突出显示,但我想识别它并根据该选择采取相应的操作。注意:我不想在编辑模式下选择单元格。另外,如何以编程方式选择单元格而无需单击?
struct OtherView: View {
@State var list: [String]
@State var selectKeeper = Set<String>()
var body: some View {
NavigationView {
List(list, id: \.self, selection: $selectKeeper) { item in
Text(item)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是演示选择的 gif
