SwiftUI中Rectangle调用strokeBorder报错:类型无该成员的问题咨询
SwiftUI Rectangle虚线描边报错解决方法
报错原因
问题核心是修饰符调用顺序导致的类型变化:
Rectangle本身确实是Shape类型,但调用.fill(Color("Dark Gray"))后,返回值变成了some View类型。strokeBorder(style:)是Shape协议专属的方法,View类型没有这个成员,因此编译器抛出报错。
两种可行的修复方案
方案一:先描边再设置背景填充
利用strokeBorder返回Shape视图的特性,通过background实现内部填充:
VStack { Rectangle() .strokeBorder(style: StrokeStyle(lineWidth: 4, dash: [15.0])) .background(Color("Dark Gray")) .cornerRadius(4) }
方案二:用overlay叠加描边层
先完成矩形的填充和圆角设置,再通过overlay叠加一个带虚线描边的矩形:
VStack { Rectangle() .fill(Color("Dark Gray")) .cornerRadius(4) .overlay( Rectangle() .stroke(style: StrokeStyle(lineWidth: 4, dash: [15.0])) .cornerRadius(4) ) }
内容的提问来源于stack exchange,提问作者blabus
相关产品推荐
相关产品推荐

