我试图根据布尔值 Select 剪贴画.

.clipShape(
        noText ? Circle() : Capsule()
)

由于此错误,这将不起作用:

Result values in '? :' expression have mismatching types 'Circle' and 'Capsule'

基于布尔值 Select 剪辑形状的最佳方法是什么?谢谢

推荐答案

您的?:表达式需要确保两个条件的类型相同,所以要解决问题,只需将形状包装在AnyShape()中.try 以下示例代码(您可以用自己的图像替换):

import SwiftUI

struct Practice: View {
@State private var test = false
var body: some View {
Image(systemName: "rectangle.fill")
    .resizable()
    .padding()
    .clipShape(test ? AnyShape(Circle()) : AnyShape(Capsule()))
    //For iOS 14 this can be done with .mask
    //.mask(test ? AnyView(Circle()) : AnyView(Capsule()))
Button("change shape") {
    test.toggle()
}
}

}

Ios相关问答推荐

为什么Pushed View Controller在UIKit中具有导航控制器?

带外部笔划的圆形进度视图

SWIFT图表轴订购问题

如何解释在SwiftUI视图中观察到持续的数据更改

OnTapGesture在其修改的视图外部触发

Xcode 15模拟器用x86_64编译

如何使用 Rxswift 处理程序最喜欢的按钮

如何在Swift/Combine中从timer.publish属性传递两个参数到任意方法

Swift Combine:prepend() before share() 阻止初始接收器执行

SKScene 的更新功能似乎不起作用

iOS - 判断开发者模式是否开启 (Swift)

iOS SwiftUI - 使用 PhotosPicker 从图库中 Select 图像或视频

渲染的海边重定向在物理 iOS 设备上不起作用

来自 c++ 的runtime_error未在 iOS 中捕获

如何让我的 iOS 应用程序与 api 连接?

interfaceOrientation在 iOS 8 中已弃用,如何更改此方法 Objective C

应用程序不包含正确的测试版权利

Swift 中的日期到毫秒和回溯到日期

如何在 Android 和 iPhone 的移动应用程序中实施推荐计划

如何进行键值观察并在 UIView 的框架上获取 KVO 回调?