<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>iLoveCode.ru: заметки с тегом iOS</title>
<link>https://ilovecode.ru/tags/ios/</link>
<description>Программирование на Swift, настройка Xcode, интеграция 1С с сайтом на Битрикс, настройка unix-сервера, настройка почтового сервера.</description>
<author>Михаил</author>
<language>ru</language>
<generator>E2 (v3849; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Программирование на Swift, настройка Xcode, интеграция 1С с сайтом на Битрикс, настройка unix-сервера, настройка почтового сервера.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Как установить свое приложение из XCode на iPhone</title>
<guid isPermaLink="false">11</guid>
<link>https://ilovecode.ru/all/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone/</link>
<pubDate>Sat, 22 Oct 2022 12:32:22 +0000</pubDate>
<author>Михаил</author>
<comments>https://ilovecode.ru/all/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone/</comments>
<description>
&lt;p&gt;Чтобы первый раз установить свое приложение на реальное устройство под управлением iOS выполнить несколько подготовительных шагов.&lt;/p&gt;
&lt;h2&gt;Перевести iPhone в режим разработчика&lt;/h2&gt;
&lt;p&gt;Для перевода iPhone в режим разработчика переходим в настройках устройства: &lt;b&gt;Настройки -&gt; Конфиденциальность и безопасность -&gt; Режим разработчика&lt;/b&gt; и активируем переключатель «Режим разработчика». iPhone потребует перезагрузки. Соглашаемся.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-1.png" width="400" height="250" alt="" /&gt;
&lt;/div&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-2.png" width="400" height="250" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;После перезагрузки и разблокировки iPhone попросит подтвердить включение режима разработчика, указав, что уменьшиться уровень защиты. Нажимаем «Включить». Теперь режим разработчика активирован и можно подключать устройство к Xcode.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone.png" width="400" height="237" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Если понадобится выключить режим разработчика, то заходим в тот же пункт меню. Деактивируем переключатель и обязательно перезагружаем iPhone, т. к. изменения вступают в силу только после перезагрузки устройства.&lt;br /&gt;
&lt;a href="https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device"&gt;Описание включения режима разработчика в документации от Apple&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Проверяем, что версия iOS, установленная на iPhone не ниже, чем минимальная версия iOS в проекте&lt;/h2&gt;
&lt;p&gt;Это необходимо для того, чтобы в списке симуляторов и устройств появилось наше устройство. Если версия iOS на устройстве ниже, чем минимальная в проекте, то устройства в списке не будет.&lt;/p&gt;
&lt;p&gt;Итак, открываем файл проекта (1), выбираем Target приложения (2), идем во вкладку General (3), ищем раздел Minimum Deployments и проверяем версию iOS (4). При необходимости, меняем ее на версию, не выше, чем на устройстве.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2024-11-02-v-20.04.04.png" width="1082" height="431" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Подтверждаем сертификат разработчика на iPhone&lt;/h2&gt;
&lt;p&gt;Подключаем iPhone к своему Mac и устанавливаем наше приложение, чтобы к нам пришел сертификат. iPhone нужно будет разблокировать и нажать «Доверять устройству». После этого в Xcode в списке симуляторов и устройств выбираем наш iPhone и запускаем на нем приложение.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2022-10-22-v-14.09.06.png" width="343" height="348" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Через какое-то время приложение установится (бывает нужно подождать пару минут), но не запустится. На iPhone и в Xcode появятся сообщения о том, что разработчик ненадежный. Закрываем эти сообщения. нам нужно активировать сертификат, который у нас уже на iPhone.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/IMG_1127.png" width="399" height="228" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Активируем сертификат на iPhone и снова устанавливаем приложение&lt;/h2&gt;
&lt;p&gt;Для активации сертификата разработчика на iPhone в настройках устройства открываем: &lt;b&gt;Настройки -&gt;  Основные -&gt; VPN и управление устройством&lt;/b&gt; Там в подразделе «ПО Разработчика» будет ваш сертификат.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/IMG_1128.png" width="400" height="399" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Входим в него, нажимаем «Доверять». Появится сообщение, в нем тоже нажимаем «Доверять».&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/IMG_1130.png" width="399" height="586" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;После этого в Xcode снова запускаем приложение. Приложение должно открыться на iPhone.&lt;br /&gt;
Теперь можно устанавливать на ваш iPhone любые приложения подписанные вашим сертификатом разработчика. Для бесплатной записи разработчика одновременно доступно 3 установленных приложения на устройстве.&lt;/p&gt;
</description>
</item>

<item>
<title>Как правильно удалить Main.Storyboard в проекте Swift</title>
<guid isPermaLink="false">10</guid>
<link>https://ilovecode.ru/all/kak-pravilno-udalit-main-storyboard-v-proekte-swift/</link>
<pubDate>Wed, 19 Oct 2022 19:31:36 +0000</pubDate>
<author>Михаил</author>
<comments>https://ilovecode.ru/all/kak-pravilno-udalit-main-storyboard-v-proekte-swift/</comments>
<description>
&lt;p&gt;При создании нового проекта по умолчанию используется режим работы со &lt;b&gt;Storyboards&lt;/b&gt;. Это значит интерфейс первого экрана приложения будет управляться через &lt;b&gt;Main.Storyboard&lt;/b&gt;. Если мы планируем работать с интерфейсов в коде, то нам нужно, чтобы этого не происходило. Для этого &lt;b&gt;Main.Storyboard &lt;/b&gt;нужно удалить и убрать его подключение.&lt;/p&gt;
&lt;h2&gt;Удаляем файл Main.Storyboard&lt;/h2&gt;
&lt;p&gt;В списке файлов проекта находим файл &lt;b&gt;Main.Storyboard&lt;/b&gt; и удаляем его, нажав bacspace. Подтверждаем удаление&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2022-10-19-v-20.45.00.png" width="647" height="403" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;После этого проект перестанет запускаться, говоря, что он не находит &lt;b&gt;Main.Storyboard&lt;/b&gt;. Нужно убрать ссылки на него.&lt;/p&gt;
&lt;h2&gt;Удаляем ссылки на Main.Storyboard из Info.plist&lt;/h2&gt;
&lt;p&gt;Чтобы удалить ссылки на &lt;b&gt;Main.Storyboard&lt;/b&gt; из &lt;b&gt;Info.plist&lt;/b&gt; переходим в настройки проекта. Выбираем &lt;b&gt;Targets&lt;/b&gt;. В ней нам нужна вкладка &lt;b&gt;Info&lt;/b&gt;. Находим параметры &lt;b&gt;Main storyboard file base name — Main&lt;/b&gt; и &lt;b&gt;Storyboard Name — Main&lt;/b&gt;. Удаляем их с помощью Backspace.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://ilovecode.ru/pictures/Snimok-ekrana-2022-10-19-v-20.47.40.png" width="1372" height="552" alt="" /&gt;
&lt;/div&gt;
&lt;h2&gt;Создаем вручную окно в SceneDelegate (iOS 13+)&lt;/h2&gt;
&lt;p&gt;Т. к. теперь приложение не использует &lt;b&gt;Storyboard&lt;/b&gt;, то нам вручную нужно создать окно и определить &lt;b&gt;ViewController&lt;/b&gt;, который будет являться точкой входа. Код &lt;b&gt;SceneDelegate&lt;/b&gt; будет выглядеть так:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        window = UIWindow(windowScene: windowScene)
        window?.windowScene = windowScene
        window?.makeKeyAndVisible()
        window?.rootViewController = ViewController()
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если приложение должно работать под управлением &lt;b&gt;iOS 12 и ниже&lt;/b&gt;, то похожий код нужно разместить в &lt;b&gt;AppDelegate&lt;/b&gt; вместо &lt;b&gt;SceneDelegate&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Проверяем, что все корректно работает.&lt;/h2&gt;
&lt;p&gt;Переходим во &lt;b&gt;ViewController&lt;/b&gt; и добавляем во &lt;b&gt;viewDidLoad()&lt;/b&gt; строку отвечающую за изменений цвета фона &lt;b&gt;view&lt;/b&gt;:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;view.backgroundColor = .systemTeal&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Загружаем приложение. Оно должно запуститься без ошибок. А мы увидим экран с новым фоном. Это говорит о том, что мы все сделали правильно.&lt;/p&gt;
</description>
</item>


</channel>
</rss>