Как использовать подкласс UIView из фреймворка в конструкторе интерфейсов - PullRequest
0 голосов
/ 17 мая 2019

Задача

Я начал разделять свой код на модули, поэтому я создал фреймворк под названием GEView.

Проблема в конструкторе интерфейсов. UIView подклассируется с использованием каркаса:

Custom class

Однако я не вижу никаких @IBInspectable свойств. Это сработало, когда этот класс был в проекте, а не разделен на фреймворк. Как я вижу это, чтобы я мог изменить свойства?

Рамочный класс

/// UIView subclass to allow creating corners, shadows, and borders in storyboards.
@IBDesignable
open class GEView: UIView {

    /* ... */


    // MARK: - Rounded corners
    @IBInspectable
    public var cornerRadius: CGFloat = 0 {
        didSet {
            layer.cornerRadius = self.cornerRadius
            layer.masksToBounds = true
        }
    }


    /* ... */
}

Фреймворк реализации

Frameworks

Я даже добавил import GEView в класс для этого контроллера представления в конструкторе интерфейсов, который содержит это представление, которое все еще не работает.

Я впервые использую свой собственный фреймворк в проекте, чтобы я мог создать или импортировать его неправильно. Вот иерархия проекта:

App hierarchy

Метод полуобработки

Мне удалось заставить Interface Builder хотя бы узнать класс GEView. Я попробовал этот код в моем проекте:

@IBDesignable
class IBGEView: GEView {

    @IBInspectable
    var _cornerRadius: CGFloat { return cornerRadius }
}

Тогда я бы подкласс в Interface Builder с IBGEView. Это ни в коем случае не решение, которое я искал, поэтому я все еще ищу. Это не решение.

1 Ответ

0 голосов
/ 17 мая 2019

Я думаю, вам также нужно указать модуль. Как правило, это название фреймворка. Снимите отметку с модуля и напишите имя фреймворка там

...