You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:45:03