在SwiftUI中将tick函数抽离到独立struct的实现问题咨询
实现方案
这个需求完全可以实现,你只需要让预定义的Ticks结构体遵守SwiftUI的View协议,将原有ContentView中tick函数的视图逻辑迁移到Ticks内部即可,完整修改后代码如下:
1. 调整Ticks结构体定义
struct Ticks: View { // 接收外部传入的当前刻度序号 let tick: Int var body: some View { HStack { Rectangle() .fill(Color.primary) .opacity(tick % 20 == 0 ? 1 : 0.4) .frame(width: tick % 4 == 0 ? 15 : 7, height: 2) Spacer() } .rotationEffect(Angle.degrees(Double(tick)/240 * 360)) } }
2. 调整ContentView调用逻辑
删除原有tick函数,直接在遍历中实例化Ticks视图即可:
struct ContentView: View { var body: some View { ZStack { ForEach(0..<60*4) { tick in Ticks(tick: tick) } .padding(.horizontal, 10.0) } } }
后续如果需要修改刻度的样式规则,只需要调整Ticks结构体内部的实现即可,不需要改动上层ContentView的逻辑,复用性更强。
内容的提问来源于stack exchange,提问作者mrcreate
相关产品推荐
相关产品推荐

