{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "iLoveCode.ru: заметки с тегом iOS",
    "_rss_description": "Программирование на Swift, настройка Xcode, интеграция 1С с сайтом на Битрикс, настройка unix-сервера, настройка почтового сервера.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/ilovecode.ru\/tags\/ios\/",
    "feed_url": "https:\/\/ilovecode.ru\/tags\/ios\/json\/",
    "icon": "https:\/\/ilovecode.ru\/user\/userpic@2x.jpg?1629231306",
    "author": {
        "name": "Михаил",
        "url": "https:\/\/ilovecode.ru\/",
        "avatar": "https:\/\/ilovecode.ru\/user\/userpic@2x.jpg?1629231306"
    },
    "items": [
        {
            "id": "11",
            "url": "https:\/\/ilovecode.ru\/all\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone\/",
            "title": "Как установить свое приложение из XCode на iPhone",
            "content_html": "<p>Чтобы первый раз установить свое приложение на реальное устройство под управлением iOS выполнить несколько подготовительных шагов.<\/p>\n<h2>Перевести iPhone в режим разработчика<\/h2>\n<p>Для перевода iPhone в режим разработчика переходим в настройках устройства: <b>Настройки -> Конфиденциальность и безопасность -> Режим разработчика<\/b> и активируем переключатель «Режим разработчика». iPhone потребует перезагрузки. Соглашаемся.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-1.png\" width=\"400\" height=\"250\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-2.png\" width=\"400\" height=\"250\" alt=\"\" \/>\n<\/div>\n<p>После перезагрузки и разблокировки iPhone попросит подтвердить включение режима разработчика, указав, что уменьшиться уровень защиты. Нажимаем «Включить». Теперь режим разработчика активирован и можно подключать устройство к Xcode.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone.png\" width=\"400\" height=\"237\" alt=\"\" \/>\n<\/div>\n<p>Если понадобится выключить режим разработчика, то заходим в тот же пункт меню. Деактивируем переключатель и обязательно перезагружаем iPhone, т. к. изменения вступают в силу только после перезагрузки устройства.<br \/>\n<a href=\"https:\/\/developer.apple.com\/documentation\/xcode\/enabling-developer-mode-on-a-device\">Описание включения режима разработчика в документации от Apple<\/a>.<\/p>\n<h2>Проверяем, что версия iOS, установленная на iPhone не ниже, чем минимальная версия iOS в проекте<\/h2>\n<p>Это необходимо для того, чтобы в списке симуляторов и устройств появилось наше устройство. Если версия iOS на устройстве ниже, чем минимальная в проекте, то устройства в списке не будет.<\/p>\n<p>Итак, открываем файл проекта (1), выбираем Target приложения (2), идем во вкладку General (3), ищем раздел Minimum Deployments и проверяем версию iOS (4). При необходимости, меняем ее на версию, не выше, чем на устройстве.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2024-11-02-v-20.04.04.png\" width=\"1082\" height=\"431\" alt=\"\" \/>\n<\/div>\n<h2>Подтверждаем сертификат разработчика на iPhone<\/h2>\n<p>Подключаем iPhone к своему Mac и устанавливаем наше приложение, чтобы к нам пришел сертификат. iPhone нужно будет разблокировать и нажать «Доверять устройству». После этого в Xcode в списке симуляторов и устройств выбираем наш iPhone и запускаем на нем приложение.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-22-v-14.09.06.png\" width=\"343\" height=\"348\" alt=\"\" \/>\n<\/div>\n<p>Через какое-то время приложение установится (бывает нужно подождать пару минут), но не запустится. На iPhone и в Xcode появятся сообщения о том, что разработчик ненадежный. Закрываем эти сообщения. нам нужно активировать сертификат, который у нас уже на iPhone.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/IMG_1127.png\" width=\"399\" height=\"228\" alt=\"\" \/>\n<\/div>\n<h2>Активируем сертификат на iPhone и снова устанавливаем приложение<\/h2>\n<p>Для активации сертификата разработчика на iPhone в настройках устройства открываем: <b>Настройки ->  Основные -> VPN и управление устройством<\/b> Там в подразделе «ПО Разработчика» будет ваш сертификат.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/IMG_1128.png\" width=\"400\" height=\"399\" alt=\"\" \/>\n<\/div>\n<p>Входим в него, нажимаем «Доверять». Появится сообщение, в нем тоже нажимаем «Доверять».<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/IMG_1130.png\" width=\"399\" height=\"586\" alt=\"\" \/>\n<\/div>\n<p>После этого в Xcode снова запускаем приложение. Приложение должно открыться на iPhone.<br \/>\nТеперь можно устанавливать на ваш iPhone любые приложения подписанные вашим сертификатом разработчика. Для бесплатной записи разработчика одновременно доступно 3 установленных приложения на устройстве.<\/p>\n",
            "date_published": "2022-10-22T12:32:22+00:00",
            "date_modified": "2024-11-02T18:13:53+00:00",
            "image": "https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-1.png",
            "_date_published_rfc2822": "Sat, 22 Oct 2022 12:32:22 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "11",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-1.png",
                    "https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone-2.png",
                    "https:\/\/ilovecode.ru\/pictures\/kak-ustanovit-svoe-prilozhenie-iz-xcode-na-iphone.png",
                    "https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2024-11-02-v-20.04.04.png",
                    "https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-22-v-14.09.06.png",
                    "https:\/\/ilovecode.ru\/pictures\/IMG_1127.png",
                    "https:\/\/ilovecode.ru\/pictures\/IMG_1128.png",
                    "https:\/\/ilovecode.ru\/pictures\/IMG_1130.png"
                ]
            }
        },
        {
            "id": "10",
            "url": "https:\/\/ilovecode.ru\/all\/kak-pravilno-udalit-main-storyboard-v-proekte-swift\/",
            "title": "Как правильно удалить Main.Storyboard в проекте Swift",
            "content_html": "<p>При создании нового проекта по умолчанию используется режим работы со <b>Storyboards<\/b>. Это значит интерфейс первого экрана приложения будет управляться через <b>Main.Storyboard<\/b>. Если мы планируем работать с интерфейсов в коде, то нам нужно, чтобы этого не происходило. Для этого <b>Main.Storyboard <\/b>нужно удалить и убрать его подключение.<\/p>\n<h2>Удаляем файл Main.Storyboard<\/h2>\n<p>В списке файлов проекта находим файл <b>Main.Storyboard<\/b> и удаляем его, нажав bacspace. Подтверждаем удаление<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-19-v-20.45.00.png\" width=\"647\" height=\"403\" alt=\"\" \/>\n<\/div>\n<p>После этого проект перестанет запускаться, говоря, что он не находит <b>Main.Storyboard<\/b>. Нужно убрать ссылки на него.<\/p>\n<h2>Удаляем ссылки на Main.Storyboard из Info.plist<\/h2>\n<p>Чтобы удалить ссылки на <b>Main.Storyboard<\/b> из <b>Info.plist<\/b> переходим в настройки проекта. Выбираем <b>Targets<\/b>. В ней нам нужна вкладка <b>Info<\/b>. Находим параметры <b>Main storyboard file base name — Main<\/b> и <b>Storyboard Name — Main<\/b>. Удаляем их с помощью Backspace.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-19-v-20.47.40.png\" width=\"1372\" height=\"552\" alt=\"\" \/>\n<\/div>\n<h2>Создаем вручную окно в SceneDelegate (iOS 13+)<\/h2>\n<p>Т. к. теперь приложение не использует <b>Storyboard<\/b>, то нам вручную нужно создать окно и определить <b>ViewController<\/b>, который будет являться точкой входа. Код <b>SceneDelegate<\/b> будет выглядеть так:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">class SceneDelegate: UIResponder, UIWindowSceneDelegate {\r\n\r\n    var window: UIWindow?\r\n\r\n    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {\r\n        guard let windowScene = (scene as? UIWindowScene) else { return }\r\n        \r\n        window = UIWindow(windowScene: windowScene)\r\n        window?.windowScene = windowScene\r\n        window?.makeKeyAndVisible()\r\n        window?.rootViewController = ViewController()\r\n    }\r\n}<\/code><\/pre><p>Если приложение должно работать под управлением <b>iOS 12 и ниже<\/b>, то похожий код нужно разместить в <b>AppDelegate<\/b> вместо <b>SceneDelegate<\/b>.<\/p>\n<h2>Проверяем, что все корректно работает.<\/h2>\n<p>Переходим во <b>ViewController<\/b> и добавляем во <b>viewDidLoad()<\/b> строку отвечающую за изменений цвета фона <b>view<\/b>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">view.backgroundColor = .systemTeal<\/code><\/pre><p>Загружаем приложение. Оно должно запуститься без ошибок. А мы увидим экран с новым фоном. Это говорит о том, что мы все сделали правильно.<\/p>\n",
            "date_published": "2022-10-19T19:31:36+00:00",
            "date_modified": "2022-11-22T13:47:55+00:00",
            "image": "https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-19-v-20.45.00.png",
            "_date_published_rfc2822": "Wed, 19 Oct 2022 19:31:36 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "10",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-19-v-20.45.00.png",
                    "https:\/\/ilovecode.ru\/pictures\/Snimok-ekrana-2022-10-19-v-20.47.40.png"
                ]
            }
        }
    ],
    "_e2_version": 3849,
    "_e2_ua_string": "E2 (v3849; Aegea)"
}