Swift @IBИнспективные свойства в структуре, не отображаемой в Interface Builder

Я пытаюсь создать структуру пользовательского UIViewController с помощью @IBInspectable для редактирования его свойств в Interface Builder.

public class BWWalkthroughPageViewController: UIViewController {
    @IBInspectable public var speed: CGPoint = CGPointZero
    @IBInspectable public var speedVariance: CGPoint = CGPointZero
    @IBInspectable public var animationType: String = ""
    @IBInspectable public var animateAlpha: Bool = false
}

Если исходный код рамки находится в примерном проекте приложения, свойства отображаются в Attribute Inspector, как показано на рисунке ниже,

IBInspectable

но если я добавлю встроенную фреймворк в проект приложения, свойства не будут отображаться в инспекторе.

Можно ли показать проверенные свойства встроенной структуры для Interface Builder? Если возможно, как?

Вот исходный код рамки, который разветвляется из проекта без рамки. https://github.com/yoichitgy/BWWalkthrough/tree/support-carthage

Ответ 1

Создание фреймворка

Создайте инфраструктуру по умолчанию и добавьте туда свои быстрые файлы.

введите описание изображения здесь

Затем установите ваши быстрые файлы как общедоступные.

введите описание изображения здесь

После этого скопируйте фреймворк и добавьте его в папку проекта

введите описание изображения здесь

Используйте фреймворк

Добавьте фреймворк в свой проект

введите описание изображения здесь

Создайте новый viewController в своем раскадровке и установите класс viewController, который находится в вашей инфраструктуре

введите описание изображения здесь

Вот и все. Вы увидите свои свойства в раскадровке.

Ответ 2

Причина, по которой атрибуты не будут отображаться в интерфейсе Builder в вашем приложении, но сделать это в вашей структуре, потому что ваша инфраструктура не является целью вашего приложения. Самый простой способ убедиться, что он включен, - это использовать Cocoapods, он отлично справится с вашей задачей, и установка будет относительно простой.

Замечание: IBDesignable и IBInspectable действительно не имеют никакого отношения друг к другу. С помощью IBInspectable вы можете подвергать ограниченное количество типов свойств интерфейсу Builder или раскадровке (например, NSNumber, Bool, UIColor и т.д.). IBDesignable однако используется для просмотра рендеринга ваших представлений в баннере или раскадровке. Они очень удобны для совместного использования, т.е. Изменения свойств для проверяемых атрибутов и просмотра отображаемого вида.