Ios split view: How To Split Screen on iPhone & Use Multitasking (2022)

Split Controller без этих ваших сторибордов / Хабр

Раньше для поддержки iPad делали отдельный xib. Чтобы унифицировать лейаут, в 2014 году Apple представила Auto Layout и Size Classes, а для адаптивной навигации UISplitViewController.

Split-контроллер — это контейнер, который разместит два контроллера рядом. Слева будет навигационный контроллер (речь не про Navigation Controller), справа соответсвующий выбору в навигационном. Короче, как в Настройках.

Разберем как настроить UISplitViewController и его поведение на экранах.

Определяем контроллеры

Обозначим левый (навигационный) и правый контроллеры. Для обоих установим заголовок:

class MasterController: UITableViewController {
   override func viewDidLoad() {
        super.viewDidLoad()
        self.navigationItem.title = "Master"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }
}
class DetailController: UIViewController {
    override func viewDidLoad() {
        super. viewDidLoad()
        self.navigationItem.title = "Detail"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }
}

Split-контроллер это контейнер для двух контроллеров. Как я писал до ката, слева навигационный-главный контроллер, справа соответствующий выбору в навигационном, или детальный (Detail Controller). Master и Detail запоминайте, слова будут встречаться в документации и протоколах.

Добавляем Split

Перейдем в AppDelegate, в методе didFinishLaunchingWithOptions создаем новое окно, инициализируем Split-контроллер и два других, устанавливаем в Split:

let masterController = MasterController()
let masterNavigationController = UINavigationController(rootViewController: masterController)
let detailController = DetailController()
let detailNavigationController = UINavigationController(rootViewController: detailController)
let splitViewController =  UISplitViewController()
splitViewController.viewControllers = [masterNavigationController, detailNavigationController]
self. window = UIWindow(frame: UIScreen.main.bounds)
self.window!.rootViewController = splitViewController
self.window!.makeKeyAndVisible()

Запустим симулятор. Портретная и альбомная ориентации соответсвенно:

В портертной ориентации не видно Master-контроллера. Смахните у левого края, чтобы он появился. Настраивается с помощью режимов, их разберем дальше.

Навигация

Добавим в Master-контроллер ячейки. Напомню, Master-контроллер это таблица, обернутая в UINavigationController.

Ты умеешь добавлять ячейки, смотреть код тебе не нужно

class MasterController: UITableViewController {
    override func viewDidLoad() {
        self.tableView = UITableView(frame: .zero, style: .insetGrouped)
        super.viewDidLoad()
        self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "id")
        self.navigationItem.title = "Master"
        self.navigationController?.navigationBar.prefersLargeTitles = true
    }
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 2
    }
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 4
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView. dequeueReusableCell(withIdentifier: "id")!
        cell.textLabel?.text = "\(indexPath)"
        return cell
    }
}

А если не умеешь, то сюда.

В iOS 13 появился новый стиль таблицы .insetGrouped, я установил его. Стиль доступен начиная с Xcode 11.

Запустим проект:

По нажатию на ячейку покажем детальный контроллер. Как же режут слух «‎детальные контроллеры»‎, надеюсь в коментах подскажите перевод лучше. Код выглядит так:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
   let controller = DetailController()
   controller.navigationTitle = "\(indexPath)"
   self.showDetailViewController(UINavigationController(rootViewController: controller), sender: nil)
}

Помните про нейминг мастер / детальный контроллеры? Вот пример использования Detail в методе showDetailViewController.

Внимательные заметят, что проперти navigationTitle у контроллера нет. Обновим класс Detail-контроллера:

class DetailController: UIViewController {
    var navigationTitle: String = "Detail"
    override func viewDidLoad() {
        super. viewDidLoad()
        self.navigationItem.title = navigationTitle
        self.view.backgroundColor = .white
    }
}

Запустите проект и нажмите на ячейку:

Айфоны

Навигация адаптивная, а значит всё готово. Ну почти. Выберите айфон и запустите:

Работает как обычный Navigation-контроллер. Это универсальность адаптивность — в зависимости от свободного пространства Split-контроллер размещает главный и детальный контроллеры.

На айфоне первым открылся не Master-контроллер, а Detail. Переход от отображения двух контроллеров к одному похожая ситуация, настраивается делегатом UISplitViewControllerDelegate. Возвращаемое значение определяет показывать Master-контроллер, или Detail:

extension AppDelegate: UISplitViewControllerDelegate {
    func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
        return true
    }
}

Этот метод не всегда должен возвращать true. Пример: при смене ориентации в компактную и уже открытом Detail контроллере, может потребоваться оставить Detail на экране. Планируйте это поведение.

Альбомная для iPhone

Альбомная ориентация для айфонов работает без Split по умолчанию. Это исправляется режимом отображения для Split-контроллера:

splitViewController.preferredDisplayMode = UISplitViewController.DisplayMode.allVisible

Задаем предпочтительный режим отображения, а именно показывать пару Master-Detail всегда, где это возможно. Возможность определяет API, настроить нельзя.

В портретной ориентации останется так же. А вот в альбомной (только для Xs Max и 8+):

Если в SDK изменятся условия для Split-контроллера, ваш проект по умолчанию реализует их.

Размеры

Можно настроить. Делается это отношением сторон:

splitViewController.preferredPrimaryColumnWidthFraction = 0.5
splitViewController.maximumPrimaryColumnWidth = 2000

Master и Detail будут одинаковых размеров. Обязательно установите maximumPrimaryColumnWidth. Опционально можно установить минимальную ширину. Скриншот добавлять не буду, и так много айпадов на туториал)

Прячем Master

Добавляем кнопку, которая открывает Detail на весь экран. Split-контроллер должен быть в режиме .allVisible. Вставьте код для Detail-контроллера в viewDidLoad:

if let splitController = self.splitViewController{
   if let navController = splitController.viewControllers.last as? UINavigationController {
      navController.topViewController?.navigationItem.leftBarButtonItem = splitController.displayModeButtonItem
   }
}

Описать поведение сложно, а гифка получается размером с бюджет Москвы. Поэтому скриншот:

Или у меня в твиттере видео.

Гайдлайны

AutoLayout размещает элементы, Split-контроллер определяет навигацию. Эпл настоятельно рекомендует использовать статический Master-контроллер. Я ради эксперимента сделал слева навигационный контроллер, по нажатию на ячейку пушил контроллеры (вместо обновления Detail-контроллера). Выглядит странно.

In general, restrict navigation to one side of a split view. Placing navigation in both panes of a split view makes it hard for people to stay oriented and discern the relationship between the two panes.

Выделяйте активный выбор в Master-контроллере. Хотя содержимое Detail-контроллера может изменяться, оно всегда должно соответствовать выделению на Master. Это поможет людям контролировать отношения между контроллерами. Контролировать контроллеры — каламбур какой-то.

Не нужно использовать Split везде. Но если в вашем приложении сильная навигация, а root-контроллер это Tab или Navigation, скорее всего Split полезен. Если у вас одноэкранное приложение-переводчик, Split вам не нужен.

Для ищущих

Ссылка на документацию, ссылка на гайдлайны.

Если вам удобнее смотреть видео, гляньте туториал:

Подписывайтесь на мой канал в телеграмме.

новое отображение звонка и режим Split View — Wylsacom

Ждём?

Концепты iOS — это всегда про ожидания пользователей. Некоторые функции ждут годами, как новую «звонилку» в iOS.

Блогер с канала The Hacker 34 опубликовал ролик со своим видением новой iOS 14:

Давайте рассуждать, что из концепта действительно нужно, а про что пора забыть и не брать пример с Android.

Новые иконки

Да, систему стоит обновить кардинально, а не только иконки. Последний крупный апдейт — это iOS 7 и отказ от скевоморфизма. Вид системы постоянно улучшают, но уже хочется увидеть что-то абсолютно новое.

Тёмная тема на iOS экономит заряд батареи

В iOS 13, например, добавили долгожданную тёмную тему и, судя по отзывам, все очень рады.

Окно входящего вызова

Apple давно пора изменить окно входящего вызова, которое закрывает весь экран и останавливает работу приложений, записи видео, да и просто заставляет вас ответить или отклонить звонок. Хотелось бы, чтобы маленькое уведомление, которое можно будет свернуть, стало главной фишкой iOS 14.

Клавиатура с GIF

Смайлики вынесли в отдельную кнопку — так что можно будет добавлять гифки. Вообще, вот именно в добавление GIF верится мало: модерировать всё это сложно, а сами файлы часто в плохом качестве.

Split View

Запуск двух приложений на маленьком дисплее iPhone — глупость. Да, дисплеи смартфонов действительно маленькие для того, чтобы запускать на них два приложения. Сворачивать видео в «плавающее» окно — это другое (но тоже бы не помешало), а ведь запускать два приложения не всегда удобно даже на iPad mini, а это, на секундочку, маленький планшет.

Несколько аккаунтов

На iPhone ждать не стоит — смартфон слишком личное устройство, а вот на iPad давно пора добавить такую возможность: у многих планшет является домашним устройством, которым пользуется вся семья, так почему бы не добавить несколько аккаунтов?

Always-On

В Apple Watch Series 5 добавили, а чем iPhone хуже? Вот только зачем он нужен — не понимаю. iPhone можно вывести из «спящего режима» одним тапом или наклоном к себе, а там уже все уведомления и время.

Выбор стандартного приложения

Я использую Tweetbot вместо официального клиента для Твиттера. Переходя по ссылке, которая ведёт на профиль в соцсети или твит, я всегда наблюдаю загрузку стандартного клиента, а ещё чаще загрузку в браузере.

Размещение иконок в любом месте

Опять же, на iPhone такое мы вряд ли увидим, а на iPad — вполне вероятно, учитывая огромное желание компании продать вам больше планшетов и рассказать, почему они лучше вашего Windows-компьютера.


Как вам концепт? Ждёте эти функции в iOS 14 или считаете только часть из них полезными?

Предложения магазинов

Предыдущий
Apple обновила внешний вид страницы о конфиденциальности

Следующий
Обзор спортивных TWS-наушников Motorola Verve Buds 200

Как работать в многозадачном режиме с помощью Split View

  • Вы можете сделать разделенный экран на iPad с помощью функции многозадачности Split View и использовать два приложения одновременно.
  • Чтобы разделить экран на iPad, откройте одно приложение и перетащите другое приложение из Dock в сторону экрана.
  • Чтобы избавиться от разделения экрана, закройте одно приложение, смахнув его с экрана, или полностью отключите эту функцию.

iPad настолько универсален, что иногда может показаться, что он полностью заменяет ваш ноутбук или настольный компьютер.

Например, вы можете разделить экран на iPad для одновременного просмотра нескольких приложений. Это называется Split View, и это одна из многих функций многозадачности iPad.

Вот как разделить экран на iPad и работать в режиме многозадачности с помощью Split View и Slide Over или полностью отключить эти функции.

Важно: Чтобы разделить экран на iPad, вам потребуется iPad Pro, iPad 5-го поколения или новее, iPad Air 2 или новее, iPad Mini 4 или новее. Прочтите нашу статью, чтобы узнать, какой у вас iPad.

Как сделать разделенный экран на iPad

1. Во-первых, вам нужно убедиться, что одно из приложений, которые вы хотите открыть, находится в Dock — на небольшой панели значков приложений внизу вашего экрана. Для этого откройте нужное приложение, а затем закройте его, чтобы оно появилось в одном из «недавно использованных» слотов Dock.

2. Убедившись, что приложение находится в Dock, запустите другое приложение, которое вы хотите использовать, и оставьте его открытым.

3. Аккуратно проведите вверх от нижней части экрана, чтобы увидеть панель Dock. Не проводите пальцем вверх слишком сильно, иначе вы просто вернетесь на главный экран. Проведите пальцем вверх только настолько, чтобы панель Dock нависла над вашим приложением.

4. Нажмите и удерживайте приложение в доке, а затем перетащите его вправо до конца экрана и отпустите. Если вы перетащите его полностью вправо, два приложения появятся рядом, и вы можете перетащить разделительную полосу между ними, чтобы дать им больше или меньше места.

Вам нужно будет открыть одно приложение, а другое будет готово для извлечения из Dock.

Уильям Антонелли/Инсайдер

Если вы перетащите приложение из Dock и отпустите его, не доводя до конца экрана, оно просто всплывет поверх первого приложения в маленьком окне. Это еще одна функция многозадачности под названием Slide Over.

Slide Over помещает одно приложение в меньшее окно вместо того, чтобы отводить ему всю часть экрана.

Уильям Антонелли/Инсайдер

Примечание: Не все приложения могут работать в режиме разделения экрана. Если вы попытаетесь перетащить приложение из Dock, и оно будет работать только в полноэкранном режиме, вот почему.

Как избавиться от разделения экрана на iPad

Если у вас уже есть два приложения на экране и вы хотите закрыть одно из них, вы можете легко вернуться к стандартному представлению одного приложения.

Когда два ваших приложения находятся рядом с разделительной полосой между ними, перетащите полосу полностью вправо или влево. Если вы перетащите его вправо, вы закроете приложение справа. Если вы перетащите его полностью влево, вы закроете приложение слева.

В обоих случаях открытое приложение перейдет в полноэкранный режим.

Использование ползунка для закрытия приложения оставит другое запущенным.

Уильям Антонелли/Инсайдер

Если второе приложение плавает поверх основного приложения в маленьком окне, нажмите и удерживайте серую полосу в верхней части плавающего приложения и перетащите ее вниз. Это переведет два приложения в режим разделенного экрана, что позволит вам закрыть одно из них с помощью разделителя.

Поместите оконное приложение на разделенный экран, а затем закройте его оттуда.

Уильям Антонелли/Инсайдер

Если у вас есть приложение, плавающее в окне, вы также можете временно закрыть его, проведя пальцем по серой полосе вправо. Это отправит окно за пределы экрана. Просто проведите пальцем влево от правого края экрана, чтобы вернуть его.

Как навсегда отключить разделенный экран на iPad

Если вам не нравится эта функция и вы не хотите случайно открывать приложения рядом друг с другом, вы можете полностью отключить ее.

1. Откройте приложение «Настройки».

2. Нажмите «Общие», затем «Многозадачность и док-станция».

Откройте меню «Многозадачность».

Уильям Антонелли/Инсайдер

3. Отключите «Разрешить несколько приложений», сдвинув переключатель влево.

Отключите Split View и Slide Over с помощью этого переключателя.

Уильям Антонелли/Инсайдер

Дэйв Джонсон

Внештатный писатель

Дэйв Джонсон — технический журналист, который пишет о потребительских технологиях и о том, как индустрия трансформирует спекулятивный мир научной фантастики в современную реальную жизнь. Дэйв вырос в Нью-Джерси, прежде чем поступить в ВВС, чтобы управлять спутниками, преподавать космические операции и планировать космические запуски. Затем он провел восемь лет в качестве руководителя отдела контента в группе Windows в Microsoft. Как фотограф Дэйв фотографировал волков в их естественной среде обитания; он также инструктор по подводному плаванию и соведущий нескольких подкастов. Дэйв является автором более двух десятков книг и участвовал во многих сайтах и ​​публикациях, включая CNET, Forbes, PC World, How To Geek и Insider.

ПодробнееПодробнее

По сравнению: iPadOS 16 Stage Manager и iPadOS 15, многозадачность в режиме Split View

Stage Manager и Split View предлагают разные возможности многозадачности


AppleInsider может получать партнерскую комиссию за покупки, сделанные по ссылкам на нашем сайте.

Благодаря iPadOS 16 любой iPad с процессором M1 имеет доступ к двум различным системам многозадачности, каждая из которых имеет свои преимущества и недостатки. Вот как они сравниваются.

Многозадачность на iPad прошла долгий путь с тех пор, как устройство было впервые представлено в 2010 году. Сначала оно не имело никакой формы многозадачности, кроме полноэкранного переключения приложений, и превратилось в устройство, способное запускать восемь активных приложений одновременно.

Для пользователей iPad, начиная с iPadOS 16, доступны две формы многозадачности — Stage Manager и Split View. Однако пользователи могут воспользоваться преимуществами более продвинутого Stage Manager, только если у них есть iPad с процессором M1.

Это ограничение исключает большинство нынешних пользователей iPad, поэтому для использования этой функции потребуется обновление. Однако Stage Manager может быть не для всех и не используется по умолчанию.

Когда в 2015 году впервые были представлены Split View и Slide Over, это был новый способ управления многозадачностью на iPad. Два приложения можно разместить бок о бок, используя только два варианта размера для режима Split View.

Split View не сильно изменился с момента его дебюта в 2015 году

Slide Over позволяет одному приложению отображаться в виде небольшого плавающего окна над интерфейсом. Хотя с элементами приложений, указанных ниже, можно было взаимодействовать, когда функция Slide Over была активна, это было не идеально.

Эта форма многозадачности имитирует функцию Spaces в macOS, которая создает полноэкранные приложения, между которыми можно переключаться одним жестом. Apple настроила функциональность, но так и не изменила то, как она работает на фундаментальном уровне, даже по сей день.

Многие пользователи требовали более надежной многозадачной системы или даже воссоздания работы с окнами в macOS. То, что представила Apple, было чем-то средним под названием Stage Manager.

Apple впервые представила эту функцию во время презентации macOS Ventura на WWDC. Это система для управления окнами с использованием стеков окон приложений в небольшом представлении, похожем на карусель.

Добавление внешнего монитора увеличивает количество доступных окон в несколько раз.

Эта функция также была представлена ​​для iPadOS, но с некоторыми ограничениями. Приложения нельзя было размещать свободно, окна имеют предопределенные размеры, и только четыре приложения могут работать на iPad одновременно. Могут работать четыре дополнительных приложения, но только если подключен внешний дисплей.

Stage Manager не является многозадачной системой де-факто в iPadOS и не включен по умолчанию на iPad M1. Вместо этого это отдельный режим, который пользователи могут включить в любое время через Центр управления.

Разделенный вид лучше подходит для сосредоточенных задач

Когда Apple впервые представила Split View, она гордилась тем, что два полноэкранных приложения рядом на 12,9-дюймовом iPad Pro будут отображать полные 9,7-дюймовые версии в альбомной ориентации. В то время как Stage Manager позволяет одному приложению работать в полноэкранном режиме, дополнительные приложения вызывают сжатие окон и не могут занимать ту же область, что и Split View.

Slide Over предоставляет отдельный набор окон многозадачности, который можно открыть в любое время.

Кроме того, Slide Over предлагает собственные полезные инструменты многозадачности, недоступные в Stage Manager даже в macOS. Поскольку Slide Over выступает в качестве вторичной многозадачной системы с собственным набором приложений, пользователи могут вызывать ее при использовании любого другого приложения или режима Split View.

Когда вам нужно больше двух или трех приложений одновременно, начинают проявляться ограничения Split View. Конечно, приложение можно загрузить из Slide Over, но на этом уровне это не настоящая многозадачность.

Stage Manager позволяет выполнять более сложные рабочие процессы

Увеличение количества приложений на экране с трех до четырех не звучит впечатляюще, но Stage Manager — это гораздо больше, чем просто приложения, работающие на переднем плане. На нашем 12,9-дюймовом iPad Pro мы видим четыре стека приложений и наши основные активные приложения, всего до 16 приложений, отображаемых только на iPad.

При подключении к 27-дюймовому студийному дисплею на iPad может быть запущено восемь активных приложений, по четыре на каждом дисплее. Однако количество доступных стеков приложений на стороне увеличивается с четырех до девяти, что означает, что до 44 приложений могут быть видны и готовы к доступу в любой момент.

Stage Manager может иметь до четырех приложений в наборе по сравнению с двумя в режиме Split View

Это число — дикий крик по сравнению с тремя видимыми приложениями в режиме Split View или даже с 18 возможными приложениями, доступными в переключателе приложений без прокрутки. Большинству пользователей было бы трудно создать одиннадцать отдельных стеков приложений, которые бы функционировали полезным образом, но тот факт, что это возможно, по-прежнему хорош для пользователей iPad.

Наличие различных стеков приложений для работы, развлечений, социальных чатов, редактирования, умного дома и многого другого делает работу более плавной. Это настоящая многозадачность без беспорядка из двадцати открытых, перекрывающихся окон, закрывающих рабочий стол.

После включения Stage Manager функция Slide Over исчезает, а стеки приложений воссоздаются из памяти. Другие функции многозадачности, такие как «картинка в картинке» и Quick Note, по-прежнему работают, хотя не представляется возможным вызвать Quick Note без Apple Pencil при использовании Stage Manager.

Добавьте видео в картинке «картинка в картинке» и заметку для еще большего количества многозадачных окон

На внешнем дисплее можно запустить Stage Manager, в то время как на iPad запущено полноэкранное приложение или режим Split View. Однако на мониторе всегда будет работать Stage Manager, если только пользователь не переключится в режим зеркального отображения, который сдвигает его на соотношение сторон 4:3.

Переключатель в Центре управления активирует Stage Manager, а длительное нажатие на значок дает пользователям возможность автоматически скрывать док-станцию ​​или стеки приложений. Если окно приложения сделано достаточно большим, стеки приложений и док-станция также будут скрыты.

Выбор того, что работает лучше всего

Несмотря на то, что iPad продолжает превращаться в более мощную платформу для повышения производительности, Apple придерживается одного главного убеждения. iPad должен функционировать как простое планшетное устройство и масштабироваться в зависимости от потребностей пользователя.

Stage Manager предлагает меньше места для двух приложений рядом, чем Split View

Это означает, что, хотя 12,9-дюймовый iPad Pro может подключаться к внешнему монитору и запускать восемь приложений одновременно, его также можно держать в руке с помощью одно приложение занимает весь дисплей. Это также приводит к многозадачности, поскольку Stage Manager может не подходить для каждого варианта использования.

Например, Stage Manager работает, даже если у пользователя нет мыши или клавиатуры, но им не так просто управлять.

scroll to top