我正在尝试使用SwiftUI进行制作,因此,如果我点击圆圈,图像或类似的东西,它将偏移到某个位置,如果再次点击,它将返回到位置,并以同样的方式来回切换。我找到了一个教程,该教程教我如何切换背景色。 https://www.ioscreator.com/tutorials/swiftui-gesture-tutorial。如果您不花心地阅读它,本质上,代码就是这样的:
body: ListView(
children: <Widget>
[
Container(
padding: EdgeInsets.all(5.0),
child: Stack(
children: <Widget>
[
Container
(
padding: EdgeInsets.fromLTRB(0,0,0,0),
child: new Image
(
image: new AssetImage('images/99.jpg'),
fit: BoxFit.cover
)
),
Positioned(
bottom: 0,
right: 125,
child: Container
(
padding: EdgeInsets.all(7.0),
color: Colors.black.withOpacity(0.3),
child: Text("The text", style: TextStyle(color: Colors.white, fontSize: 25.0), textAlign: TextAlign.center,),
),
)
,
],
),
),
],
),
我改变了
struct ContentView: View {
// 1.
@State private var didTap: Bool = false
var body: some View {
// 2.
Text("Tap me")
.frame(minWidth:0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
// 3.
.gesture(TapGesture()
.onEnded {
self.didTap.toggle()
}
)
// 4.
.background(didTap ? Color.blue : Color.red)
}
}
到
Text("Tap me")
.frame(minWidth:0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
我想知道是否有一种方法可以代替Circle()
.frame(width: 100, height: 100)
.foregroundColor(Color.red)
来将TapGesture布尔变量合并到.background(didTap ? Color.blue : Color.red)
中
不知何故。
答案 0 :(得分:0)
我希望这是您正在寻找的解决方案,我也改变了添加轻击手势的方式。
struct TestView: View {
@State private var didTap: Bool = false
private var xOffset: CGFloat {
return didTap ? 10.0 : 0.0
}
var body: some View {
// 2.
Circle()
.frame(width: 100, height: 100)
.foregroundColor(Color.red)
.onTapGesture {
self.didTap.toggle()
}
//The x-offset depends on didTap State
.offset(x: xOffset, y: 0.0)
}}