SwiftUI中自定义Shape图形无法正常填充颜色的问题求助
问题根因
stroke(_:lineWidth:)是Shape类型的专属方法,调用后会返回一个描边完成的View实例,不再属于Shape类型。而fill(_:)仅对Shape类型生效,对普通View调用不会产生任何填充效果,你代码中的调用顺序错误导致填充失效。- 你需要的「同时对Shape实现填充+描边」的效果,不能直接链式调用
fill和stroke,需要通过叠加视图的方式实现。
修正方案
把ShapeView中Triangle的相关代码替换为以下写法即可:
// 写法1:用overlay叠加描边层 Triangle() .fill(fillColor) .overlay( Triangle() .stroke(lineWidth: lineWidth) ) // 写法2:直接在ZStack里加两层Triangle分别处理填充和描边 ZStack { Square() .stroke(lineWidth:lineWidth) Triangle() .fill(fillColor) Triangle() .stroke(lineWidth:lineWidth) } .frame(width: 200, height: 200, alignment: .center)
内容的提问来源于stack exchange,提问作者Phantom59
相关产品推荐
相关产品推荐

