gpt4 book ai didi

swift - 在 UIViewRepresentable SwiftUI 中设置自定义 UIView 框架

转载 作者:行者123 更新时间:2023-12-03 21:53:36 24 4
gpt4 key购买 nike

我正在尝试使用 UIViewRepresentable 在 SwiftUI 中使用我的自定义 UIView 并且我希望我的 UIView 具有与我在 .frame() 中设置的相同的大小,以便我可以像这样使用它:

MyViewRepresentable()
.frame(width: 400, height: 250, alignment: .center)

例如,我可以将框架设置为属性:

struct MyViewRepresentable: UIViewRepresentable {
var frame: CGRect
func makeUIView(context: Context) -> UIView {
let myView = MyView(frame: frame)

return view
}
func updateUIView(_ uiView: UIView, context: Context) {}
}

用法:

struct ContentView: View {
var body: some View {
MyViewRepresentable(frame: CGRect(x: 0, y: 0, width: 400, height: 250))
.frame(width: 400, height: 250, alignment: .center)
}
}

这不是一个解决方案,我想知道如何使它正确。

最佳答案

MyView具有正确的内部布局(仅取决于自己的边界),则不需要外部附加限制,即

struct MyViewRepresentable: UIViewRepresentable {
func makeUIView(context: Context) -> UIView {
return MyView(frame: .zero)
}
func updateUIView(_ uiView: UIView, context: Context) {}
}

将在 400x250 帧以下精确调整大小
struct ContentView: View {
var body: some View {
MyViewRepresentable()
.frame(width: 400, height: 250, alignment: .center)
}
}

如果不是,则内部 MyView 布局有缺陷。

关于swift - 在 UIViewRepresentable SwiftUI 中设置自定义 UIView 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62301450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com