İçeriğe geç

SwiftUI ile UIHostingController kullanımı

Merhabalar bu yazımda UIKit uygulamalarınızda SwiftUI sayfalarını kolay bir şekilde nasıl kullanabileceğinizi göstereceğim.

Çoğu şirket ve geliştirici hala aktif olarak UIKit elementlerini ve storyboard kullanarak uygulama geliştiriyor. SwiftUI yapısının yeni çıkması ve olgunlaşmasını bekleyenler çok fazla. Ancak bazı durumlarda UIKit ile yazdığınız uygulamalarda SwiftUI ile yazdığınız sayfaları kullanabilirsiniz. SwiftUI ile bazı tasarımsal işlemler UIKit’e göre çok daha hızlı ve kolay yapıldığı için işinize oldukça yarayacaktır.

Aşağıda yazdığım örneği inceleyebilirsiniz.

import SwiftUI

struct HomeView: View {
    var body: some View {
        ZStack {
            LinearGradient.init(gradient: Gradient(colors: [.purple, .blue]), startPoint: .top, endPoint: .bottom)
            Text("TALK IS CHEAP. SHOW ME THE CODE. 👨🏻‍💻😉")
                .frame(width: 155, height: nil, alignment: .center)
                .font(.system(size: 30))
                .foregroundColor(Color.white)
        }
        .edgesIgnoringSafeArea(.all)
    }
}

struct HomeView_Previews: PreviewProvider {
    static var previews: some View {
        HomeView()
    }
}

Yazdığımız SwiftUI sayfasını UIKit içerisinde UIHostingController sınıfı sayesinde elde ederek, istediğimiz UIViewController içerisinde kullanabiliyoruz.

import UIKit
import SwiftUI

class ViewController: UIViewController {
  
    override func viewDidLoad() {
        super.viewDidLoad()
        addHomeView()
    }
    
    func addHomeView() {
        let homeController = UIHostingController(rootView: HomeView())
        homeController.view.translatesAutoresizingMaskIntoConstraints = false
        self.addChild(homeController)
        self.view.addSubview(homeController.view)
        homeController.didMove(toParent: self)
        
        NSLayoutConstraint.activate([
            homeController.view.widthAnchor.constraint(equalToConstant: self.view.frame.width),
            homeController.view.heightAnchor.constraint(equalToConstant: self.view.frame.height),
            homeController.view.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
            homeController.view.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
        ])
    }
    
    override var prefersStatusBarHidden: Bool {
        return true
    }
}

 

Tarih:SwiftUI

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2020 Kenan Atmaca