Программа для легкого создания раскадровок ShotPro стала доступна на Mac [видео]
Приложение ShotPro, дебютировавшее на смартфонах и планшетах с iOS ранее в этом году, получило поддержку Mac. Скачать настольную версию можно из Mac App Store.
Главные функции ShotPro включают в себя планирование блокировок сцен, в том числе воссоздание 3D-декораций для фильмов, расчет света на площадке, как натурального, так и искусственного, а также определение необходимых настроек камеры, нужных объективов, значения зума, расположения оборудования и глубины резкости.
Программа позволяет расставить на съемочной площадке актеров, внешность и движения которых можно менять, а также реквизит. Кроме того, благодаря встроенным инструментам персонажей можно наделить простейшей анимацией, сообщает Cinemotionlab. После завершения работы проект можно экспортировать, получив при этом видеофайл в необходимом разрешении.
Разработчики утверждают, что на данный момент функционально программа ничем не отличается от мобильной версии, однако после будет модифицирована. В дальнейшем программу собираются портировать сначала на Android, а затем — на Windows.
Скачать ShotPro для iPhone и iPad можно по этой ссылке, версия для Mac доступна здесь.
Работа с раскадровками в Xamarin. Mac
Раскадровка определяет весь пользовательский интерфейс для данного приложения, разбитый на функциональный обзор контроллеров представления. В Interface Builder Xcode каждый из этих контроллеров находится в собственной сцене.
Раскадровка — это файл ресурсов (с расширениями .storyboard ), который включается в пакет приложения Xamarin. Mac при компиляции и отгрузке. Чтобы определить начальную раскадровку для приложения, измените Info.plist файл и выберите основной интерфейс из раскрывающегося списка:
Загрузка из кода
Иногда требуется загрузить определенную раскадровку из кода и создать контроллер представления вручную. Для выполнения этого действия можно использовать следующий код:
FromName Загружает файл раскадровки с заданным именем, включенным в пакет приложения. InstantiateControllerWithIdentifier Создает экземпляр контроллера представления с заданным удостоверением. Удостоверение задается в Interface Builder Xcode при проектировании пользовательского интерфейса:
При необходимости можно использовать InstantiateInitialController метод для загрузки контроллера представления, которому назначен исходный контроллер, в Interface Builder:
Он помечается точкой входа раскадровки и стрелкой открытия завершенного выше.
Контроллеры представления
Контроллеры представления определяют связи между определенным представлением информации в приложении Mac и моделью данных, предоставляющей эти сведения. Каждая сцена верхнего уровня в раскадровке представляет один контроллер представления в коде приложения Xamarin. Mac.
Жизненный цикл контроллера представления
В класс были добавлены несколько новых методов NSViewController для поддержки раскадровок в macOS. Самое важное — следующие методы используются для реагирования на жизненный цикл представления, контролируемого данным контроллером представления:
- ViewDidLoad — Этот метод вызывается, когда представление загружается из файла раскадровки.
- ViewWillAppear — Этот метод вызывается непосредственно перед отображением представления на экране.
- ViewDidAppear — Этот метод вызывается непосредственно после отображения представления на экране.
- ViewWillDisappear — Этот метод вызывается непосредственно перед удалением представления с экрана.
- ViewDidDisappear — Этот метод вызывается непосредственно после удаления представления с экрана.
- UpdateViewConstraints — Этот метод вызывается, когда ограничения, определяющие положение и размер автоматического макета представления, нуждаются в обновлении.
- ViewWillLayout — Этот метод вызывается непосредственно перед тем, как подпредставления этого представления будут размещены на экране.
- ViewDidLayout — Этот метод вызывается непосредственно после того, как подпредставления представления будут размещены на экране.
Цепочка ответчиков
Кроме того, NSViewControllers теперь являются частью _цепочки ответчиков_окна:
И, таким образом, они могут принимать и отвечать на такие события, как вырезание, копирование и вставка элементов меню. Этот контроллер автоматического просмотра выполняется только в приложениях, работающих на macOS Sierra (10,12) и более поздних версиях.
Containment
В раскадровках контроллеры представлений (например, контроллер разделенного представления и контроллер представления вкладок) теперь могут реализовать Включение, чтобы они могли «содержать» другие контроллеры подпредставления:
Дочерние контроллеры представлений содержат методы и свойства для привязки их к контроллеру родительского представления и для работы с отображением и удалением представлений с экрана.
Все контроллеры представлений контейнеров, встроенные в macOS, имеют определенную структуру, о которой Apple рекомендует при создании собственных пользовательских контроллеров представлений контейнеров.
Контроллер представления коллекции содержит массив элементов представления коллекций, каждый из которых содержит один или несколько контроллеров представления, содержащих собственные представления.
Переходов
Переходов предоставляют связи между всеми сценами, определяющими пользовательский интерфейс приложения. Если вы знакомы с обработкой раскадровок в iOS, то знаете, что переходов для iOS обычно определяет переходы между полноэкранными представлениями. Это отличается от macOS, когда переходов обычно определяет «вложение», где одна сцена является дочерней для родительской сцены.
В macOS большинство приложений обычно группируют свои представления вместе в одном окне с помощью элементов пользовательского интерфейса, таких как разделенные представления и вкладки. В отличие от iOS, когда представления должны быть переведены на экран и выключаться из-за ограниченного объема физической области отображения.
Переходов представления
Учитывая, что macOS тенденции к вложению, существуют ситуации, где используются переходов представления , например модальные окна, представления листов и поповерс. macOS предоставляет следующие встроенные типы перехода:
- Показать — отображает целевой объект перехода как не модальное окно. Например, используйте этот тип перехода для представления другого экземпляра окна документа в приложении.
- Modal — представляет целевой объект перехода как модальное окно. Например, используйте этот тип перехода, чтобы показать окно настроек для приложения.
- Лист — представляет целевой объект перехода как лист, присоединенный к родительскому окну. Например, используйте этот тип перехода для представления листа поиска и замены.
- Контекстном меню Action — представляет целевой объект перехода как в окне контекстном меню Action. Например, используйте этот тип перехода для представления параметров при щелчке пользователем элемента пользовательского интерфейса.
- Custom — представляет целевой объект перехода с помощью пользовательского типа перехода, определенного разработчиком. Дополнительные сведения см. в разделе Создание настраиваемых переходов ниже.
При использовании представления переходов можно переопределить PrepareForSegue метод контроллера родительского представления для представления на инициализацию и переменные и предоставить все данные представленному контроллеру представления.
Активированный переходов
Активированный переходов позволяет указать именованный переходов (с помощью свойства идентификатора в Interface Builder) и активировать их событиями, такими как пользователь, нажимая кнопку или вызывая PerformSegue метод в коде:
Идентификатор перехода определяется в Interface Builder Xcode при размещении пользовательского интерфейса приложения.
В контроллере представления, который выступает в качестве источника перехода, следует переопределить PrepareForSegue метод и выполнить инициализацию, необходимую перед выполнением перехода и отображения указанного контроллера представления:
При необходимости можно переопределить ShouldPerformSegue метод и управлять тем, выполняется ли фактическое выполнение перехода с помощью кода C#. Для контроллеров представлений, представленных вручную, вызовите их DismissController метод, чтобы удалить их из отображения, когда они больше не нужны.
Создание настраиваемых переходов
Возможны случаи, когда приложению требуется тип перехода, не предоставленный сборкой переходов, определенной в macOS. В этом случае можно создать пользовательский перехода, который можно назначить в Interface Builder Xcode при создании макета пользовательского интерфейса приложения.
Например, чтобы создать новый тип перехода, который заменяет текущий контроллер представления внутри окна (вместо того чтобы открывать целевую сцену в новом окне), можно использовать следующий код:
Обратите внимание на несколько моментов:
- Мы используем атрибут, Register чтобы предоставить этот класс цели-C/macOS.
- Мы переопределяем Perform метод для фактического выполнения действия нашего пользовательского перехода.
- Мы заменяем ContentViewController контроллер окна на тот, который определен целевым объектом (назначением) перехода.
- Мы удаляем исходный контроллер представления для освобождения памяти с помощью RemoveFromParentViewController метода.
Чтобы использовать этот новый тип перехода в Interface Builder Xcode, сначала необходимо скомпилировать приложение, а затем переключиться на Xcode и добавить новый перехода между двумя кадрами. Задайте для стиля значение Custom , а для класса перехода ReplaceViewSegue — (имя нашего пользовательского класса перехода):
Контроллеры окна
Windows Controllers содержит и контролирует различные типы окон, которые может создать приложение macOS. Для раскадровки они имеют следующие возможности.
- Они должны предоставить контроллер представления содержимого. Это будет тот же контроллер представления содержимого, что и у дочернего окна.
- Storyboard Свойство будет содержать раскадровку, из которой был загружен контроллер окна, иначе, null если она не загружается из раскадровки.
- Можно вызвать метод, DismissController чтобы закрыть заданное окно и удалить его из представления.
Как и контроллеры представлений, контроллеры окон реализуют PerformSegue PrepareForSegue методы, и ShouldPerformSegue могут использоваться в качестве источника операции перехода.
Контроллер окна отвечает за следующие возможности приложения macOS:
- Они управляют конкретным окном.
- Они управляют заголовком окна и панелью инструментов (если она доступна).
- Они управляют контроллером представления содержимого для отображения содержимого окна.
Распознаватели жестов
Распознаватели жестов для macOS практически идентичны своим аналогам в iOS и позволяют разработчику легко добавлять жесты (например, нажатие кнопки мыши) к элементам пользовательского интерфейса приложения.
Однако, когда жесты в iOS определяются конструкцией приложения (например, при касании экрана двумя пальцами), большинство жестов в macOS определяются оборудованием.
С помощью распознавателей жестов можно значительно сократить объем кода, необходимого для добавления пользовательских взаимодействий в элемент пользовательского интерфейса. Так как они могут автоматически определять двойные и одинарные щелчки, щелкните и перетащите события и т. д.
Вместо переопределения MouseDown события в контроллере представления следует использовать распознаватель жестов для управления событием пользовательского ввода при работе с раскадровками.
В macOS доступны следующие распознаватели жестов:
- NSClickGestureRecognizer — Регистрация событий нажатия кнопки мыши.
- NSPanGestureRecognizer — Регистрирует кнопки мыши вниз, события перетаскивания и освобождения.
- NSPressGestureRecognizer — Регистрирует удерживание кнопки мыши в течение заданного промежутка времени.
- NSMagnificationGestureRecognizer — Регистрирует событие увеличения на основе трекпада оборудования.
- NSRotationGestureRecognizer — Регистрирует событие вращения от трекпада оборудования.
Использование ссылок раскадровки
Ссылка на раскадровку позволяет использовать большую, сложную структуру раскадровки и разбивать ее на более мелкие раскадровки, на которые можно ссылаться из оригинала, тем самым удаляя сложность и делая полученные отдельные раскадровки проще в проектировании и обслуживании.
Кроме того, ссылка раскадровки может предоставлять привязку к другой сцене в той же раскадровке или в определенной сцене на другом.
Ссылка на внешнюю раскадровку
Чтобы добавить ссылку на внешнюю раскадровку, выполните следующие действия.
В Обозреватель решенийщелкните правой кнопкой мыши имя проекта и выберите Добавить > новый файл. > MAC-адрес > Раскадровка. Введите имя новой раскадровки и нажмите кнопку » создать «:
В Обозреватель решенийдважды щелкните новое имя раскадровки, чтобы открыть его для редактирования в Interface Builder Xcode.
Разработайте макет новых сцен раскадровки, как обычно и сохраняйте изменения:
Переключитесь на раскадровку, в которую предполагается добавить ссылку, в Interface Builder.
Перетащите ссылку раскадровки из библиотеки объектов на область конструктора:
В инспекторе атрибутоввыберите имя раскадровки , созданной ранее:
Щелкните мини-приложение пользовательского интерфейса (например, кнопка) в существующей сцене и создайте новый перехода для только что созданной Ссылки раскадровки . В контекстном меню выберите команду » отобразить «, чтобы завершить перехода:
Сохраните изменения в раскадровке.
Вернитесь к Visual Studio для Mac, чтобы синхронизировать изменения.
При запуске приложения и выборе элемента пользовательского интерфейса, созданного с помощью перехода, будет отображаться начальный контроллер окна из внешней раскадровки, указанной в ссылке раскадровки.
Ссылка на конкретную сцену во внешней раскадровке
Чтобы добавить ссылку на конкретную сцену, внешняя Раскадровка (а не исходный контроллер окна) выполните следующие действия.
В Обозреватель решенийдважды щелкните внешнюю раскадровку, чтобы открыть ее для редактирования в Interface Builder Xcode.
Добавьте новую сцену и разработайте ее макет, как обычно:
В инспекторе удостоверенийвведите идентификатор раскадровки для контроллера окна новой сцены:
Откройте раскадровку, в которую вы будете добавлять ссылку, в Interface Builder.
Перетащите ссылку раскадровки из библиотеки объектов на область конструктора:
В инспекторе удостоверенийвыберите имя раскадровки и идентификатор ссылки (идентификатор раскадровки) для сцены, созданной ранее.
Щелкните мини-приложение пользовательского интерфейса (например, кнопка) в существующей сцене и создайте новый перехода для только что созданной Ссылки раскадровки . В контекстном меню выберите команду » отобразить «, чтобы завершить перехода:
Сохраните изменения в раскадровке.
Вернитесь к Visual Studio для Mac, чтобы синхронизировать изменения.
При запуске приложения и выборе элемента пользовательского интерфейса, созданного перехода из, отображается сцена с заданным идентификатором раскадровки из внешней раскадровки, указанной в ссылке раскадровки.
Ссылка на конкретную сцену в той же раскадровке
Чтобы добавить ссылку на определенную сцену в ту же раскадровку, выполните следующие действия.
В Обозреватель решенийдважды щелкните раскадровку, чтобы открыть ее для редактирования.
Добавьте новую сцену и разработайте ее макет, как обычно:
В инспекторе удостоверенийвведите идентификатор раскадровки для контроллера окна новой сцены:
Перетащите ссылку раскадровки из панели элементов на область конструктора:
В инспекторе атрибутоввыберите идентификатор ссылки (идентификатор раскадровки) для сцены, созданной ранее.
Щелкните мини-приложение пользовательского интерфейса (например, кнопка) в существующей сцене и создайте новый перехода для только что созданной Ссылки раскадровки . В контекстном меню выберите команду » отобразить «, чтобы завершить перехода:
Сохраните изменения в раскадровке.
Вернитесь к Visual Studio для Mac, чтобы синхронизировать изменения.
При запуске приложения и выборе элемента пользовательского интерфейса, созданного перехода из, отображается сцена с заданным идентификатором раскадровки в той же раскадровке, которая указана в ссылке раскадровки.
Пример сложной раскадровки
Сложный пример работы с раскадровками в приложении Xamarin. Mac см. в примере приложения SourceWriter. SourceWriter — это простой редактор исходного кода, который предоставляет поддержку для автозавершения и выделения простого синтаксиса.