RID — Rapid Interface Builder | Reviews for RID — Rapid Interface Builder at

Начиная

Сначала рассмотрим интерфейс Interface Builder. После открытия XIB вы увидите 4 разных окна. Окно «Библиотека», «Вид / Окно», «Окно документа» и окно «Атрибуты», «Размер», «Соединения и личность». Если вы не видите ни одного, ни одного из этих окон, убедитесь, что Интерфейсный Разработчик работает, заново открыв окна из меню Инструменты.

Что плохого в interface builder?

Использовать или не использовать IB — это вопрос вкуса. Кому-то кажется, что он упрощает разработку. Кому-то кажется, что усложняет.

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

С другой стороны, если нужно очень быстро набросать базовый UI, и привязать какие-то действия к нему, то IB весьма полезен.

Runtime Attributes

На протяжении уже нескольких лет можно устанавливать пользовательские свойства прямо в Interface Builder, но многие разработчики не знают об этом, они создают UIView в IB, а затем настраивают некоторые его свойства в коде.

Вот как можно задать, например, ширину границы и угловой радиус некоторого UIView с помощью Runtime Attributes (в Identity Inspector):

Кроме того, можно расширять UIKit классы, добавляя в них новые свойства, доступные для установки прямо в IB:

extension UIView {
    @IBInspectable var borderColor: UIColor? {
        get {
            if let colorRef = layer.borderColor {
                return UIColor(CGColor: colorRef)
            }
            return nil
        }
        set {
            layer.borderColor = newValue?.CGColor
        }
    }
}

Вся иерархия объектов под курсором

Представим ситуацию, когда в UITableViewCell есть UIView на всю ячейку. Сложно будет выбрать именно ячейку, а не этот UIView. А таких UIView может быть много. Иногда даже бывает трудно представить себе «глубину» всех этих UIView без выбора иерархии представления в доке:

К счастью, в Interface Builder есть меню, в котором будут отображаться все объекты, находящиеся под курсором. Чтобы увидеть это меню, нужно нажать Shift Right Click или Shift Control Click:

Ссылка на объект по Object ID

Предположим, что разработчик 1 и разработчик 2 работают над проектом со Storyboard’ами. У разработчика 1 возникла проблема с некоторым UIView, поэтому он хотел бы показать ее разработчику 2. Какой самый быстрый и понятный способ сослаться на эту проблему?

Interface Builder присваивает каждому объекту в Storyboard уникальный идентификатор объекта. Для любого объекта можно найти его Object ID в Identity Inspector:

Получив Object ID, разработчик 2 может легко его найти с помощью функции поиска Xcode (Command F):

Xcode выделит объект с данным Object ID как показано выше.

В следующей части я напишу про другие интересные возможности Interface Builder, а также про его недостатки.

Максим Алиев

iOS-разработчик MobileDev

Autosizing

Когда экран поворачивается на устройстве iOS, вы можете управлять тем, как объекты пользовательского интерфейса будут изменять свое положение или растягиваться, чтобы заполнить новое окно. Всем этим можно управлять с помощью этого простого небольшого инструмента в Интерфейсном Разработчике.

Поле слева — это место, где вы решаете, как будет масштабироваться объект, а поле справа — это анимированная визуализация того, как будет работать объект при изменении фрейма макета.

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

Ibactions и iboutlets

Когда вам нужно соединить ваш код с объектом в Интерфейсном Разработчике, вы используете IBAction и IBOutlet. Эти ключевые слова являются флагом для Интерфейсного Разработчика, чтобы знать, что есть свойство, доступное для соединения с контроллером.

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

Создать IBOutlet так же просто, как добавить флаг, когда вы определяете свойство объекта в вашем контроллере.

IBAction похож. При определении метода в заголовочном файле вы добавляете флаг IBAction в качестве возвращаемого типа.

Соединить их — простая задача в Интерфейсном Разработчике.

При создании IBAction: нажмите на объект в окне, удерживайте элемент управления, перетащите к «Владельцу файлов» в окне документа, отпустите кнопку мыши и затем управляйте. Выберите действие для ссылки в раскрывающемся списке.

При создании IBOutlet: щелкните «Владелец файлов» в окне документа, удерживайте элемент управления, перетащите элемент «Владелец файлов» к объекту в окне, отпустите кнопку мыши, а затем элемент управления. Выберите розетку из раскрывающегося списка.

Rid — rapid interface builder | reviews for rid — rapid interface builder at

Rid — rapid interface builder 1.0 freeware download — tools, code generators — rid is a drag’n’drop gui-designer for fltk, similar to fluid.

Written in Objective-C, the GeographicFormatter provides a Cocoa NSFormatter subclass for latitude and longitude output and input. There is also an IBPalette for integration with Interface Builder.


Pattern Builder is an object modelling and code generation tool for Mac OS X developers. It can model and generate the class files for complete Objective-C/Cocoa applications, with Interface Builder outlets and actions, which can then be built in…


Roadsend PHP Compiler is a free, open source native compiler for the PHP language. It compiles PHP source code to stand alone, native binaries which do not require an interpreter.

Roadsend Compiler can build online web applications with…


This is a ASP based database tool which is helpful for the novice programmer who wants to generate their own powerful web applications quickly. It allows them to add, edit, remove and search their records from their web database. This tool is…


The JHMVCFramework is an IBPlugin that simplifies setting up a solid MVC system in Cocoa CoreData Based apps. The plugin comes complete with a Library of base objects that you can use in Interface Builder either straight out of the box or by…

Атрибуты, связи, размер и идентичность

Это окно позволяет изменить свойства и настройки для выбранного объекта UIView. В зависимости от объекта пользовательского интерфейса вы можете изменить настройки шрифта, стиль объекта, цвета фона или прозрачность.

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

Размер раздела делает, как вы ожидаете. Вы можете изменить координаты X & Y объекта, а также его физические размеры. Сюда также входят параметры автоматического изменения размера, которые управляют изменением размера элемента в случае поворота экрана или изменения размера.

Раздел идентичности обычно не используется, но в нем есть несколько интересных полей. Если вы расширили объект UIKit и хотите использовать собственный класс вместо стандартного, то здесь вы можете переназначить базовый класс объектов.

Библиотека

В этой библиотеке все объекты UIKit доступны для использования в вашем проекте. Простое перетаскивание объекта в окно добавит его в представление. Библиотека разделена на 3 раздела.

  • Контроллеры. Это объекты, которые управляют набором связанных представлений в определенном контексте контента. Примером может служить Контроллер сообщений, показывающий сообщения, доступные пользователю.
  • Представления данных: когда данные должны отображаться пользователю, эти представления будут соответствовать большинству типов мультимедиа. Таблицы, изображения, веб-страницы, карты и прокрутка содержимого обрабатываются объектами в этой категории.
  • Входные данные и значения: когда пользователю требуется ввести информацию или предоставить выбор, эти объекты предоставляют множество различных опций.

Использование контроллеров, а не объектов пользовательского интерфейса

Если вы хотите использовать UITabBar в своем приложении, вы не перетаскиваете UITabBar в представление. Как вы используете UITabBar, UINavigationBar и панель поиска, с помощью контроллера. Контроллер выходит из этих объектов и автоматически обрабатывает основные функциональные возможности этих объектов.

Плюсы и минусы interface builder и xib

В этом вопросе нет сплошных уй или нет. По общему мнению, использование Interface Builder и XIB не более интенсивно, чем создание объектов в вашем контроллере. Есть некоторые побочные эффекты от того или иного пути.

При использовании XIB легко баловать представления объектами и не учитывать последствия для памяти. В большинстве случаев беспокоиться не о чем, но в чувствительных частях приложения UITableView является одной из этих чувствительных областей, перегрузка интерфейса может вызвать замедление работы приложения.

Программирование без XIB позволяет размещать объекты в тот самый момент, когда объект требуется, и освобождать, как только он не нужен. Это сохраняет приложение легким и отзывчивым, пока ничего не просачивается (забудьте освободить объект).

Но поскольку все это делается в коде, визуальное представление того, что было создано, отсутствует, пока приложение не находится в симуляторе. Интерфейсный Разработчик позволяет интерактивно создавать представление, редактор WYSIWYG.

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

Пояснение: в скринкасте упоминается, что XIB преобразуются из XML в интерфейс на устройстве во время выполнения. Это не вариант. XIB компилируются в NIB при создании приложения и используются в приложении в качестве NIB.

Расширения uiview

Все основные объекты UIKit происходят от класса UIView. В Какао все развивается в наследственной древовидной форме. Никакая функциональность не дублируется, если она может быть унаследована. Под этим я подразумеваю, что объект UIButton, например, является потомком класса UIView.

На приведенном выше снимке экрана Interface Builder показано, что класс UIButton наследуется от класса UIControl, который, в свою очередь, наследуется от класса UIView и так далее. Все это основано на классе NSObject, который вы найдете в качестве основы любого класса Какао.

Оставьте комментарий

Войти