Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // my swiftui code
- import SwiftUI
- struct ContentView: View {
- var body: some View {
- VStack(spacing: 16) {
- Rectangle()
- .fill(Color.blue)
- .frame(height: 150)
- Rectangle()
- .fill(Color.green)
- .frame(height: 100)
- HStack(spacing: 20) {
- Button("Minimize") {
- // trigger minimize
- }
- .frame(width: 120, height: 44)
- Button("Maximize") {
- // trigger maximize
- }
- .frame(width: 120, height: 44)
- }
- }
- .padding()
- }
- }
- //my uikit code
- import UIKit
- import SwiftUI
- class HostingContainerViewController: UIViewController {
- let containerView = UIView()
- var initialFrame: CGRect = .zero // ← set externally via Representable
- var expandedFrame: CGRect = .zero // ← set externally via Representable
- override func viewDidLoad() {
- super.viewDidLoad()
- setupContainerView()
- embedSwiftUIView()
- }
- private func setupContainerView() {
- containerView.backgroundColor = .clear
- containerView.frame = initialFrame // ← Start with initial (minimized) frame
- view.addSubview(containerView)
- }
- private func embedSwiftUIView() {
- let contentView = ContentView() // Your SwiftUI view
- let hostingController = UIHostingController(rootView: contentView)
- addChild(hostingController)
- hostingController.view.frame = containerView.bounds
- containerView.addSubview(hostingController.view)
- hostingController.didMove(toParent: self)
- }
- func minimize() {
- UIView.animate(withDuration: 0.3) {
- self.containerView.frame = self.initialFrame
- }
- }
- func maximize() {
- UIView.animate(withDuration: 0.3) {
- self.containerView.frame = self.expandedFrame
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement