在Xcode中给Rectangle添加描边时,发现Xcode报错。
Rectangle()
.foregroundColor(.white)
.frame(width: 140,height: 100)
.clipped()
.cornerRadius(10)
.strokeBorder(Color.red, lineWidth: 20)
报错内容:Value of type ‘some View’ has no member ‘strokeBorder’。
问题原因:strokeBorder 是用于 Shape 类型(例如 Rectangle、Circle 等)的,而对 Rectangle 添加了其他修饰符(例如 cornerRadius),导致它不再是 Shape 类型,而变成了 some View 类型,因此无法直接调用 strokeBorder。
解决方案:
将 strokeBorder 应用在原始 Rectangle 上,而不是应用其他修饰符之后的视图上。可以通过以下方法修复:
Rectangle()
.strokeBorder(Color.red, lineWidth: 20) // 首先应用描边
.background( // 设置背景为白色并裁剪
Rectangle()
.foregroundColor(.white)
.cornerRadius(10)
)
.frame(width: 140, height: 100)
.clipped() // 裁剪边框外多余部分
strokeBorder 必须直接作用在 Shape 上,而不是修改后的视图。
问题得到解决。