在 swiftUI 中为图像添加带有圆角半径的圆形图像视图
Add a circular image view with corner radius for an image in swiftUI
如何添加类似于下面附件的圆形视图。在附件中,勾选的是图片图标,我想在圆形中添加绿色背景色。我在 Swift 中有一个解决方案,但无法在 swiftUI 中实现相同的解决方案。
我的问题的相关帖子:。但是,这并不能解决我的问题。
Swift 此实现的代码:
var imageView = UIImageView()
override init(theme: Theme) {
super.init(theme: theme)
imageView.clipsToBounds = true
setLayout()
}
override func layoutSubviews() {
super.layoutSubviews()
let cornerRadius = frame.height / 2
imageView.setCornerRadius(cornerRadius)
setCornerRadius(cornerRadius)
}
您可以创建此图像...
Image(systemName: "checkmark")
.resizable()
.frame(width: 20, height: 20)
.foregroundColor(.white)
.padding(20)
.background(Color.green)
.clipShape(Circle())
或者……
Image(systemName: "checkmark.circle.fill")
.resizable
.frame(width: 40, height: 40) // put your sizes here
.foregroundColor(.green)
这不是想出的最简单的事情。使用此结构作为单独的视图。它将 return 图像在圆圈上适当调整大小。
struct ImageOnCircle: View {
let icon: String
let radius: CGFloat
let circleColor: Color
let imageColor: Color // Remove this for an image in your assets folder.
var squareSide: CGFloat {
2.0.squareRoot() * radius
}
var body: some View {
ZStack {
Circle()
.fill(circleColor)
.frame(width: radius * 2, height: radius * 2)
// Use this implementation for an SF Symbol
Image(systemName: icon)
.resizable()
.aspectRatio(1.0, contentMode: .fit)
.frame(width: squareSide, height: squareSide)
.foregroundColor(imageColor)
// Use this implementation for an image in your assets folder.
// Image(icon)
// .resizable()
// .aspectRatio(1.0, contentMode: .fit)
// .frame(width: squareSide, height: squareSide)
}
}
}
如何添加类似于下面附件的圆形视图。在附件中,勾选的是图片图标,我想在圆形中添加绿色背景色。我在 Swift 中有一个解决方案,但无法在 swiftUI 中实现相同的解决方案。
我的问题的相关帖子:
Swift 此实现的代码:
var imageView = UIImageView()
override init(theme: Theme) {
super.init(theme: theme)
imageView.clipsToBounds = true
setLayout()
}
override func layoutSubviews() {
super.layoutSubviews()
let cornerRadius = frame.height / 2
imageView.setCornerRadius(cornerRadius)
setCornerRadius(cornerRadius)
}
您可以创建此图像...
Image(systemName: "checkmark")
.resizable()
.frame(width: 20, height: 20)
.foregroundColor(.white)
.padding(20)
.background(Color.green)
.clipShape(Circle())
或者……
Image(systemName: "checkmark.circle.fill")
.resizable
.frame(width: 40, height: 40) // put your sizes here
.foregroundColor(.green)
这不是想出的最简单的事情。使用此结构作为单独的视图。它将 return 图像在圆圈上适当调整大小。
struct ImageOnCircle: View {
let icon: String
let radius: CGFloat
let circleColor: Color
let imageColor: Color // Remove this for an image in your assets folder.
var squareSide: CGFloat {
2.0.squareRoot() * radius
}
var body: some View {
ZStack {
Circle()
.fill(circleColor)
.frame(width: radius * 2, height: radius * 2)
// Use this implementation for an SF Symbol
Image(systemName: icon)
.resizable()
.aspectRatio(1.0, contentMode: .fit)
.frame(width: squareSide, height: squareSide)
.foregroundColor(imageColor)
// Use this implementation for an image in your assets folder.
// Image(icon)
// .resizable()
// .aspectRatio(1.0, contentMode: .fit)
// .frame(width: squareSide, height: squareSide)
}
}
}