Skip to content

Instantly share code, notes, and snippets.

View AkkeyLab's full-sized avatar

Akio Itaya AkkeyLab

View GitHub Profile
@AkkeyLab
AkkeyLab / static-access-sample.swift
Created November 30, 2019 18:22
Static value access sample code
import UIKit
final class AkkeyShared {
static let shared = AkkeyShared()
private init() {}
var num = 2
}
final class Akkey {
@AkkeyLab
AkkeyLab / HowXcodePreviewsWorks.md
Last active November 8, 2023 05:23
How XcodePreviews works

XcodePreviews の仕組み

XcodePreviews は SwiftUI で記述された UI を Xcode 上でプレビューするための新しい拡張機能です。 SwiftUI と UIKit には互換性があるため、 UIKit で構築された UI を XcodePreviews でプレビューさせることも可能です。
これによって、アプリケーションの再コンパイル・再実行なしに UI の変更を即時プレビューすることを可能にします。

今回は、この XcodePreviews がどのような仕組みで実現されているのかを解説します。

Build artefacts

XcodePreviews を実現するために新しく導入された Build artefacts を調べるために PreviewsSample という Single View App を作成しました。このプロジェクをビルドし、プレビュー可能な状態にしたときの Build artefacts が以下です。新しい中間ディレクトリとして Previews ディレクトリが作成されていることがわかります。

$ tree --filelimit 40 ~/Library/Developer/Xcode/DerivedData/PreviewsSample-bwzdqecwyvbvpofgqyzocvibrlbd
import SwiftUI
import UIKit
#if DEBUG
struct UserDetailBasicInfoCellPreviews: PreviewProvider {
static var previews: some View {
Group {
UserDetailBasicInfoCell()
.previewLayout(.fixed(width: 320, height: 100))
.previewDevice(PreviewDevice(rawValue: "iPhone SE"))