Image("cat")
.cornerRadius(7) // Inner corner radius
.padding(5) // Width of the border
.background(Color.primary) // Color of the border
.cornerRadius(10) // Outer corner radius
字符串 结果:
的数据 您甚至可以在ViewModifier中将其转换为更容易重用的:
struct RoundedEdge: ViewModifier {
let width: CGFloat
let color: Color
let cornerRadius: CGFloat
func body(content: Content) -> some View {
content.cornerRadius(cornerRadius - width)
.padding(width)
.background(color)
.cornerRadius(cornerRadius)
}
}
5条答案
按热度按时间utugiqy61#
SwiftUI 5.0
使用clipShape和overlay修饰符
下面是另一种方法,我们可以使用clipShape修改器(它会剪切视图),然后用颜色覆盖笔划。
字符串
结果
的数据
0x6upsns2#
想想这个:向视图中添加一个修饰符将返回一个新的
View
示例,它 Package 了前一个示例。2这也是为什么添加修饰符的顺序很重要。我们可以利用这一点:通过添加一个填充,然后添加一个背景到我们的新视图,我们可以创建我们自己的额外层:
字符串
结果:
的数据
您甚至可以在ViewModifier中将其转换为更容易重用的:
型
使用它将成为:
型
这适用于任何SwiftUI视图,如
Text
:型
结果:
的
wdebmtf23#
首先,请注意,你这样做的方式,没有剪切图像。也许你没有注意到,如果图像太小,或者如果它有一个相同颜色的画布的背景。但即使使用您的beta 4语法,你需要添加
.clipShape()
。回到你的问题,根据Beta 5发布说明:
背景(:alignment:)和边框(:width:)修饰符的复杂重载已弃用。请改用背景(:alignment:)或覆盖(:alignment:)中的形状来绘制这些修饰符。(53067530)
所以模式应该是这样的:
字符串
在您的具体情况下:
型
qyuhtwio4#
编写与Image View相同的圆形文本视图
字符串
预览如下图片:
的数据
wz3gfoph5#
我真的很喜欢kontiki的回答,但不是长度,所以我写道:
字符串