Joel Denke
05/17/2023, 7:58 AMstruct MainScreen<Content>: UIViewControllerRepresentable where Content : View {
var view: Content
init(content: () -> Content) {
view = content()
}
func makeUIViewController(context: Context) -> some UIViewController {
let size = CGSize(width: 400, height: 400)
let sizeSubView = CGSize(width: 200, height: 200)
let uiView = UIView(frame: CGRect(origin: .zero, size: size))
uiView.backgroundColor = .systemBlue
// this will be a container view for the Swift UI View
let centerPointForSubView = CGRect(origin: CGPoint(x: 100, y: 100), size: sizeSubView)
let uiViewSubView = UIView(frame: centerPointForSubView)
uiViewSubView.backgroundColor = .white
uiView.addSubview(uiViewSubView)
let host = UIHostingController(rootView: view)
let hostView = host.view!
uiViewSubView.addSubview(hostView)
return ScreenProvider.shared.createMainScreenController(uiView: hostView)
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {}
}
Would like to avoid this 😄Louis
05/18/2023, 1:07 PMJoel Denke
05/18/2023, 1:16 PMDima Avdeev
05/23/2023, 6:15 AMJoel Denke
05/23/2023, 6:30 AMDima Avdeev
05/23/2023, 6:53 AMJoel Denke
05/23/2023, 7:15 AMJoel Denke
05/23/2023, 7:17 AMfun createMainScreenController(uiView: UIView, onLogin: () -> Unit) = ComposeUIViewController {
MainScreen(
mainViewModel = MainViewModel(),
authContent = {
UIKitView(
factory = { uiView },
modifier = Modifier.fillMaxSize(),
)
},
loginContent = {
LoginScreen(UsernameLoginViewModel(), onLogin)
},
)
}
Mixing Compose and UiView in both directions nested. Here using UiKitView not supporting SwiftUi to have interop in compose for uikit. I want equivalent but fro SwiftUI View instead 🙂 Or some better way of doing it at least.Dima Avdeev
05/23/2023, 5:28 PMJoel Denke
05/23/2023, 5:45 PMDima Avdeev
05/23/2023, 7:37 PMJoel Denke
05/23/2023, 8:18 PM