Перейти к содержанию
Educora
Продвинутый20 мин9 / 14

Xcode и первое iOS-приложение

Установи Xcode, создай проект на SwiftUI, разберись в структуре проекта, смотри экран в превью и запускай приложение в симуляторе и на своём iPhone.

Проверь себя
В этом уроке ты узнаешь
  • Создавать в Xcode проект SwiftUI по шаблону App
  • Объяснять роль @main, App, WindowGroup и Bundle Identifier
  • Создавать несколько превью с помощью #Preview
  • Запускать приложение в симуляторе и на реальном iPhone

Синтаксис Swift, структуры, протоколы и замыкания ты уже знаешь. Пора применить эти знания и создать приложение для iPhone. Приложения для iOS делают в Xcode — бесплатной среде разработки Apple для Mac. В ней есть редактор кода, компилятор Swift, симуляторы iPhone и iPad, холст превью и инструменты отладки. Xcode работает только на macOS, поэтому тебе понадобится Mac.

Установка и новый проект

  1. 1
    Скачай Xcode

    Найди Xcode в Mac App Store и установи; загрузка большая, так что нужен быстрый интернет. При первом запуске Xcode предложит скачать платформу iOS (файлы симулятора) — соглашайся.

  2. 2
    Выбери шаблон

    Выбери File › New › Project…, открой вверху вкладку iOS и возьми шаблон App.

  3. 3
    Заполни параметры

    Product Name: EducoraNotes, Organization Identifier: com.educora. Для Interface выбери SwiftUI, для Language — Swift. Поле Team пока можно оставить пустым.

  4. 4
    Сохрани

    Нажми Next, выбери папку и нажми Create. Xcode откроет проект, а ContentView.swift уже будет в редакторе.

Определение
Bundle Identifier

Уникальный идентификатор приложения во всей экосистеме Apple. Он складывается из Organization Identifier и названия продукта: com.educora.EducoraNotes. App Store узнаёт приложение именно по нему; сменить его — значит создать новое приложение.

Структура проекта

  • EducoraNotesApp.swift — точка входа приложения: структура с пометкой @main, соответствующая протоколу App.
  • ContentView.swift — первый экран; его можно менять как угодно.
  • Assets.xcassets — значок приложения (AppIcon), акцентный цвет (AccentColor) и изображения.
  • Файл проекта (синий значок в самом верху навигатора) → таргет → вкладки General и Signing & Capabilities: название, версия, минимальная версия iOS и подпись.
Swift
import SwiftUI

@main
struct EducoraNotesApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}
@main сообщает системе, откуда стартует приложение; WindowGroup задаёт окно приложения и его первое представление.
Swift
import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
        }
        .padding()
    }
}

#Preview {
    ContentView()
}
Экран из шаблона: посередине значок глобуса акцентного цвета, под ним надпись «Hello, world!».

Превью и холст

Холст (canvas) справа от редактора показывает представление из блока #Preview без запуска приложения и обновляется, как только ты меняешь код. Превью интерактивно: можно нажимать кнопки и листать списки. В одном файле можно написать несколько превью и проверить экран в тёмной теме или с крупным шрифтом:

Swift
#Preview("Light") {
    ContentView()
}

#Preview("Dark") {
    ContentView()
        .preferredColorScheme(.dark)
}

#Preview("Large text") {
    ContentView()
        .environment(\.dynamicTypeSize, .xxxLarge)
}
Вверху холста появятся три названия; переключайся между ними, чтобы проверить каждый вариант.
Раньше: PreviewProvider
struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Сейчас: макрос #Preview
#Preview {
    ContentView()
}
PreviewProvider ещё встречается в старых проектах и статьях; начиная с Xcode 15 используют короткий макрос #Preview.

Запуск в симуляторе и на iPhone

Устройство выбирают в меню run destination вверху окна: любой симулятор iPhone или iPad либо подключённое реальное устройство. Cmd+R собирает и запускает приложение, Cmd+. останавливает. В симуляторе Cmd+Shift+H возвращает на экран «Домой», а Cmd+Left и Cmd+Right поворачивают устройство. Для запуска на настоящем iPhone нужно несколько шагов:

  1. 1
    Добавь Apple ID

    В Xcode › Settings › Accounts нажми + и войди со своим Apple ID. Затем на вкладке Signing & Capabilities таргета отметь Automatically manage signing и выбери себя (Personal Team) в поле Team.

  2. 2
    Подключи iPhone

    Подключи телефон к Mac кабелем, на вопрос «Trust This Computer?» ответь Trust и введи код-пароль.

  3. 3
    Включи Developer Mode

    На iPhone включи Settings › Privacy & Security › Developer Mode (пункт появляется после подключения устройства к Xcode). Телефон перезагрузится; затем подтверди Turn On.

  4. 4
    Запусти и доверься

    Выбери iPhone в run destination и нажми Cmd+R. С бесплатным аккаунтом в первый раз нужно доверить свой профиль разработчика в Settings › General › VPN & Device Management.

Пока приложение работает, сообщения из print(...) появляются в консоли внизу Xcode (Cmd+Shift+Y открывает область отладки). Щёлкни по номеру строки — появится синяя точка останова (breakpoint): приложение остановится на этой строке, и ты увидишь значения переменных.

собрать и запуститьCmd+R
остановить запущенное приложениеCmd+.
показать или скрыть холстCmd+Option+Return
обновить превьюCmd+Option+P
показать область отладки и консольCmd+Shift+Y
открыть файл или тип по имени — Open QuicklyCmd+Shift+O

Главное

  • Приложения iOS делают на Mac в бесплатной среде Xcode; новый проект создают по шаблону iOS › App с интерфейсом SwiftUI.
  • Структура App с @main — точка входа, а WindowGroup показывает первое представление.
  • Bundle Identifier — уникальное имя приложения, по которому его узнаёт App Store.
  • #Preview показывает экран на холсте; в одном файле могут быть отдельные превью для тёмной темы и крупного шрифта.
  • Для запуска на iPhone выбирают Team и включают Developer Mode; приложение, установленное с бесплатного аккаунта, работает 7 дней.

Проверь себя

Вопросов: 10. Каждый правильный ответ приносит XP.

1 / 10
Какой атрибут отмечает точку входа приложения?