SwiftUI条件语句与动画

if条件语句

SwiftUI中if条件语句的基本用法。

  • Name
    基本语法
    Type
    if-syntax
    Description
    • if 单一条件判断
    • if-else 二选一
    • if-else if 多条件判断
    • 条件中的布尔表达式
  • Name
    使用场景
    Type
    use-cases
    Description
    • 控制视图显示/隐藏
    • 根据状态切换视图
    • 条件性修饰符应用
    • 动态内容渲染

if条件示例

struct ContentView: View {
    @State private var isShowingDetail = false
    
    var body: some View {
        VStack {
            // 简单if条件
            if isShowingDetail {
                Text("详细信息")
            }
            
            // if-else条件
            if isShowingDetail {
                Text("显示状态")
            } else {
                Text("隐藏状态")
            }
            
            Button("切换") {
                isShowingDetail.toggle()
            }
        }
    }
}

三元运算符

使用三元运算符实现简洁的条件判断。

  • Name
    语法格式
    Type
    syntax
    Description
    • condition ? trueValue : falseValue
    • 嵌套使用
    • 与修饰符配合
    • 用于计算属性
  • Name
    应用技巧
    Type
    tips
    Description
    • 简单二选一场景
    • 动态样式设置
    • 文本内容切换
    • 状态颜色变化

三元运算符示例

struct StatusView: View {
    @State private var isActive = false
    
    var body: some View {
        Text(isActive ? "激活" : "未激活")
            .foregroundColor(isActive ? .green : .red)
            .font(.title)
            .onTapGesture {
                isActive.toggle()
            }
    }
}

条件动画

基于条件状态的简单动画效果。

  • Name
    动画类型
    Type
    animation-types
    Description
    • 渐隐渐现
    • 缩放动画
    • 位移动画
    • 旋转动画
  • Name
    动画配置
    Type
    animation-config
    Description
    • 动画时长
    • 动画曲线
    • 动画延迟
    • 重复次数

条件动画示例

struct AnimatedView: View {
    @State private var isExpanded = false
    
    var body: some View {
        VStack {
            Circle()
                .fill(.blue)
                .frame(width: isExpanded ? 200 : 100)
                .animation(.spring(), value: isExpanded)
            
            Button("展开/收起") {
                withAnimation {
                    isExpanded.toggle()
                }
            }
        }
    }
}

实践技巧

条件语句和动画的最佳实践。

  • Name
    代码优化
    Type
    optimization
    Description
    • 提取条件逻辑
    • 使用计算属性
    • 避免复杂嵌套
    • 合理使用Group
  • Name
    性能考虑
    Type
    performance
    Description
    • 减少状态变化
    • 优化动画性能
    • 条件判断缓存
    • 避免频繁重建

最佳实践示例

struct OptimizedView: View {
    @State private var currentState = 0
    
    var stateView: some View {
        switch currentState {
        case 0:
            return AnyView(Text("状态A")
                .transition(.scale))
        case 1:
            return AnyView(Text("状态B")
                .transition(.slide))
        default:
            return AnyView(Text("状态C")
                .transition(.opacity))
        }
    }
    
    var body: some View {
        VStack {
            stateView
            
            Button("切换状态") {
                withAnimation {
                    currentState = (currentState + 1) % 3
                }
            }
        }
    }
}

这篇文章对你有用吗?