iOS Framework projesi nasıl oluşturulur?

Zafer Ayan
6 min readOct 27, 2020

Normalde iOS projeleri geliştirimi nispeten kolaydır. Fakat farklı uygulamalar için bir SDK/framework yazıyorsanız işler karmaşıklaşabiliyor. Bu yazımda da sizlere “iOS framework projesi nasıl oluşturulur?”, “Framework içerisine nasıl storyboard ekranları eklenir?” ve “Framework kodu nasıl çalıştırılır?” gibi konulardan bahsedeceğim.

Öncelikle hem iOS projesini hem de kullanacağı framework’ü barındıracak olan workspace’i oluşturalım.

1. Workspace dosyasının oluşturulması

File > New > Workspace veya Control + Cmd + N tuş kombinasyonu ile Workspace oluşturma ekranını açın.

Proje dizinini oluşturun. Ben Users/zaferayan/XcodeProjects/MyFramework şeklinde oluşturdum. Save As kısmında workspace dosyanızın adını belirtebilirsiniz. Ben MyFramework olarak verdim. Save dedikten sonra MyFramework.workspace dosyası oluşacaktır.

MyFramework dosyasının içinde oluşan workspace dosyasını aşağıdaki gibi görebilirsiniz.

2. Framework projesinin oluşturulması

Framework projesini oluşturmak için menüdenFile > New > Project seçerek veya Cmd + Shift + N tuş kombinasyonlarıyla yeni proje oluşturma ekranını açalım:

Template olarak Framework seçelim:

Product name kısmına framework adını verebilirsiniz. Notasyon olarak FrameworkAdi-framework şeklinde kullanabilirsiniz. (Çünkü daha sonra workspace içerisine FrameworkAdi-iOS şeklinde iOS projesini de ekleyeceğiz)

Next dedikten sonra çıkan pencerede Add to: kısmında kendi workspace’imizi seçelim ki onun içine dahil etsin:

Create butonuna tkladıktan sonra aşağıdaki gibi framework projemiz oluşacaktır:

Şimdi bu framework projesini çalıştıracak olan iOS uygulamasına gelelim.

3. iOS projesinin oluşturulması

Framework’ü kullanacak olan iOS projesini oluşturmak için menüdenFile > New > Project seçerek veya Cmd + Shift + N tuş kombinasyonlarıyla yeni proje oluşturma ekranını açalım ve App’i seçelim:

Çıkan ekranda Product Name kısmına FrameworkAdi-iOS şeklinde girin. Interface kısmını ben Storyboard olarak ayarladım. Çünkü SwiftUI’ın iOS 13 öncesi desteği yok ve proje diğer düşük versiyonlu projelerde kullanılabilir:

Daha sonra Add To kısmını MyFramework şeklinde aşağıdaki gibi ayarlayalım:

Proje oluştuğunda XCode ekranı aşağıdaki gibi görüntülenecektir:

Şimdi Framework tarafından açılacak Storyboard’un oluşturulmasına geçelim.

4. Storyboard’un oluşturulması

MyFramework-framework projesine sağ tık yaparak New file.. seçelim.

Çıkan pencerede de Storyboard’u seçelim:

Storyboard adını istediğiniz bir şekilde isimlendirebilirsiniz. Ben isim karışıklığı olmaması için MyFramework koyacağım. Böylece MyFramework.storyboard dosyası oluşacak:

Storyboard’un açık hali aşağıdaki gibi olacaktır:

Şimdi bu boş storyboard’a bir viewcontroller ekleyelim.

5. ViewController eklenmesi

Storyboard içerisine ViewController eklemek için XCode’daki sağ üst köşedeki + ikonuna tıklayarak veya Cmd + Shift + L kısayoluyla Library’i açabilirsiniz. Çıkan ekranda ViewController’ı seçelim:

Oluşturduğumuz ViewController için bir Swift dosyası oluşturalım. Cmd + N ile New file penceresini açalım ve Swift File’ı seçelim. Dosya adı olarak MainViewController verelim.

ViewController dosyasının içeriğini aşağıdaki gibi dolduralım. Title’da da My Framework yazsın:

import UIKitpublic class MainViewController: UIViewController {  public override func viewDidLoad() {    super.viewDidLoad()    self.title = "My Framework"  }}

Şimdi oluşturduğumuz MainViewController.swift dosyasını, storyboard’daki ekrana bağlayalım. Bunun için ekran üzerindeki ViewController butonuna tıklayalım:

Daha sonra sağ menüdeki CustomClass alanındaki UIViewControllerdeğerini MainViewController olarak değiştirelim:

Bir de bu ekranın ilk olarak açılmasını belirtmek için Simulated metrics kısmından Is Initial View Controller seçili hale getirelim:

Şimdi uygulama içerisinden framework içerisinde oluşturduğumuz Storyboard’un açılmasını sağlayalım.

6. Framework kodunun çalıştırılması

Framework’ü uygulama ile bağlamak için öncelikle sol menüden MyFramework-iOS’i seçelim. Daha sonra General sekmesinde Frameworks, Libraries, and Embedded Content kısmındaki +’ya tıklayalım. Çıkan pencerede MyFramework_framework.framework’ü seçerek ekleyelim.

Framework’ü projemize bağladık. Şimdi uygulama içinde ekranlar arası geçiş için Main.storyboard’daki ilk ViewController’a navigation controller ekleyelim. Bunun için ViewController seçili iken Editor menüsünden Editor > Embed In > Navigation Controller seçilebilir:

NavigationController eklendikten sonra Navigation Bar kısmındaki metni büyük hale getirmek için NavigationController’daki Title’a tıklanarak sağ menüden Prefers Large Tiles seçilebilir:

Devamında ViewController’daki bar’a tıklanarak Title’a My App yazabiliriz:

Şimdi artık framework kodunu çalıştırmak için buton ekleyebiliriz. Cmd + Shift + L kombinasyonu ile library’i açalım ve aşağıdaki gibi bir buton ekleyelim:

Butonu ekrana bağlamak için öncelikle ekran ile ilişkili ViewController.swift dosyasını Control + Option + Cmd + Enter ile açalım. Control tuşuna basılı tutarak butona tıklayalım ve koddaki viewDidLoad’ın altına sürükleyerek aşağıdaki gibi tıklama olayını oluşturalım:

ViewController.swift dosyasının içeriğini aşağıdaki gibi değiştirelim:

import UIKit
import MyFramework_framework
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func buttonClicked(_ sender: Any) {
let s = UIStoryboard (name: "MyFramework", bundle: Bundle(for: MainViewController.self))
let vc = s.instantiateInitialViewController()!
self.navigationController?.pushViewController(vc, animated: true)
}
}

Kodu açıklayacak olursak:

  • 2. satırdaki import kısmında oluşturduğumuz framework’ü import ediyoruz.
  • buttonClicked içerisindeki UIStoryboard kısmında MyFramework.storyboard ‘un uzantısız halini parametre olarak veriyoruz ve MainViewController’ın bulunduğu bundle’ı belirtiyoruz.
  • let vc satırında, framework’teki ViewController’ın bir örneğini oluşturuyoruz.
  • Daha sonra framework’teki viewController’ı, iOS uygulamamızdaki navigationcontroller’a push’luyoruz.

Şimdi projeyi iOS simulatörde çalıştırmak için aşağıdaki gibi seçelim ve uygulamayı çalıştıralım:

Aşağıdaki gibi framework’teki storyboard çalıştırılmış olacaktır.

Sonuç olarak

Oluturduğunuz iOS framework’ünü artık diğer projelerde de benzer şekilde kullanabilirsiniz.

Projenin bitmiş halini https://github.com/ozcanzaferayan/sample-ios-framework reposunda bulabilirsiniz. Bu yazım hakkında soru ve görüşlerinizi aşağıdaki yorumlar kısmından yazabilirsiniz. Bana destek vermek için alkış simgesine tıklayabilirsiniz. Sonraki yazımda görüşmek üzere…

Kaynaklar:

--

--