From f0f309cbb9a7e055bc57e931a3506ebb26bf0134 Mon Sep 17 00:00:00 2001 From: Hiroshi Kimura Date: Sun, 26 Oct 2025 00:23:42 +0900 Subject: [PATCH] SwiftUIHostingViewController uses HostingController directly (#21) --- .gitignore | 1 + .../SwiftUIHostingViewController.swift | 43 +++++++++++++------ 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 829cf3a..d9761b4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ DerivedData/ .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc .swiftpm +.claude diff --git a/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift b/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift index d044efd..c5db60a 100644 --- a/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift +++ b/Sources/SwiftUIHosting/SwiftUIHostingViewController.swift @@ -40,24 +40,39 @@ open class SwiftUIHostingViewController: UIViewController { super.viewDidLoad() - let _content = content(self) + let _content = content(self).modifier(configuration.baseModifier) - let contentView = SwiftUIHostingView( - name, - file, - function, - line, - configuration: configuration - ) { _content } + #if DEBUG + + let hostingController = HostingController( + accessibilityIdentifier: _typeName(Content.self), + disableSafeArea: configuration.disableSafeArea, + ignoresKeyboard: configuration.ignoresKeyboard, + rootView: _content + ) + + #else + + let hostingController = HostingController( + disableSafeArea: configuration.disableSafeArea, + ignoresKeyboard: configuration.ignoresKeyboard, + rootView: _content + ) + + #endif + + addChild(hostingController) + view.addSubview(hostingController.view) + hostingController.didMove(toParent: self) - view.addSubview(contentView) - contentView.translatesAutoresizingMaskIntoConstraints = false + hostingController.view.backgroundColor = .clear + hostingController.view.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ - contentView.topAnchor.constraint(equalTo: view.topAnchor), - contentView.rightAnchor.constraint(equalTo: view.rightAnchor), - contentView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - contentView.leftAnchor.constraint(equalTo: view.leftAnchor), + hostingController.view.topAnchor.constraint(equalTo: view.topAnchor), + hostingController.view.rightAnchor.constraint(equalTo: view.rightAnchor), + hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), + hostingController.view.leftAnchor.constraint(equalTo: view.leftAnchor), ]) }