还在做迅捷,但我有个问题。
我创建了一个带有动态帧的图像,我想要一个标签,它必须是图像的一半宽度(例如,图像宽度=300;标签宽度150)
在UIKit中,我应该编写如下代码:
Label.widthAnchor.constraint(image.widthAnchor, multiplier: 1/2).isActive = true
我在迅捷也做过类似的尝试:
Image(systemName: "j.circle.fill")
.resizable()
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width)
Text("Placeholder").frame(width: Image.frame.width/2, height: 30)
但这不管用。
我该怎么办?
最佳答案
为什么不为这两个设置硬尺寸:
Image(systemName: "j.circle.fill")
.resizable()
.frame(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.width)
Text("Placeholder")
.frame(width: UIScreen.main.bounds.width/2, height: 30)
如果要在一个位置更改组件的整个大小,可以这样做:
struct MyView : View {
private var compWidth: CGFloat { UIScreen.main.bounds.width }
var body: some View {
VStack {
Image(systemName: "j.circle.fill")
.resizable()
.frame(width: compWidth, height: compWidth)
Text("Placeholder")
.frame(width: compWidth/2, height: 30)
}
}
}
或者,对于更优雅的方法,您可以look into
GeometryReader
。关于swift - 如何在SwiftUI中访问父框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56832865/