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

在UIViewRepresentable SwiftUI中设置自定义UIView框架,swift,uikit,swiftui,uiviewrepresentable,Swift,Uikit,Swiftui,Uiviewrepresentable,我正在尝试使用UIViewRepresentable在SwiftUI中使用我的自定义UIView,我希望我的UIView与在.frame()中设置的大小相同,以便我可以像这样使用它: MyViewRepresentable() .框架(宽度:400,高度:250,对齐:。中心) 例如,我可以将框架设置为属性: struct MyViewRepresentable:UIViewRepresentable{ 变量帧:CGRect func makeUIView(上下文:context)->UIVi

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

MyViewRepresentable()
.框架(宽度:400,高度:250,对齐:。中心)
例如,我可以将框架设置为属性:

struct MyViewRepresentable:UIViewRepresentable{
变量帧:CGRect
func makeUIView(上下文:context)->UIView{
让myView=myView(帧:帧)
返回视图
}
func updateUIView(uiView:uiView,context:context){}
}
用法:

struct ContentView:View{
var body:一些观点{
MyViewRepresentable(帧:CGRect(x:0,y:0,宽度:400,高度:250))
.框架(宽度:400,高度:250,对齐:。中心)
}
}

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

如果
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布局有缺陷。

感谢您为我指出了正确的方向!我查看了我的代码,发现我在viewDidLoad中添加了MyView子视图,而不是在layoutSubviews中。谢谢@IreiDev,这也帮了我的忙。也许你可以把这句话作为你自己问题的答案,这会很有帮助