实战需求
SwiftUI iOS 开源组件之 按压效果button
本文价值与收获
看完本文后,您将能够作出下面的界面
截屏2021-02-19 上午10.19.00.png
Jietu20210219-101916.gif
看完本文您将掌握的技能
- ViewModifier 基础使用
- @escaping 基础使用
- @ViewBuilder 基础使用
基础知识
ViewModifier
应用于视图的修改器或另一个视图修改器,生成原始值的不同版本。
protocol ViewModifier
参考代码
struct PressActions: ViewModifier {
var onPress: () -> Void
var onRelease: () -> Void
func body(content: Content) -> some View {
content
.simultaneousGesture(
DragGesture(minimumDistance: 0)
.onChanged({ _ in
onPress()
})
.onEnded({ _ in
onRelease()
})
)
}
}
extension View {
func pressAction(onPress: @escaping (() -> Void), onRelease: @escaping (() -> Void)) -> some View {
modifier(PressActions(onPress: {
onPress()
}, onRelease: {
onRelease()
}))
}
}