Я играл с IBInspectable/IBDesignable, как в этой статье: http://nshipster.com/ibinspectable-ibdesignable/.Быстрое решение множественного наследования для IBInspectable/IBDesignable?
Он показывает, как можно сделать расширение, чтобы добавить дополнительные параметры редактирования в раскадровку. Однако проблема состоит в том, что вы не можете увидеть эти изменения, отраженные в предварительном просмотре. Для этого вам нужно подклассы, используйте IBDesignable
и сделайте didset{}
.
Проблема заключается в том, что вам необходимо сделать подкласс каждого запаса UIView
подкласса. Таким образом, подкласс UILabel
, UITextField
и так далее. Каждый раз, когда вам приходится копировать/вставлять обычные файлы UIView
, такие как границы и угловой радиус.
Я не верю, что Swift поддерживает множественное наследование, что сделало бы это намного проще.
Скажем, ваш IBDesignable
подкласс UIView
называется IBView
. Есть ли способ сделать, например, UILabel
быть подклассом IBView
вместо UIView
?
В конце концов, я смотрю, есть ли способ сделать IBDesignable
менее утомительным.
Нет такой вещи, как IBView, насколько я знаю. Какие атрибуты вы пытаетесь добавить к тому, что кажется почти всеми видами UIKit? Для большинства приложений вам нужно только подклассы/расширить очень небольшую часть подклассов UIView, так как хватает UIKit. Если то, что вы пытаетесь сделать, имеет многоразовые представления IBDesigner/IBInspectable для нескольких проектов, бросает их в целевой объект и объявляет их как ** открытыми **. IB отлично справляется с этим. – dfd
Нет, это невозможно. Используйте композицию вместо наследования. Например, вы можете создать подпункт 'UIView' с закругленными углами, и если вам нужно закругленные углы на что-нибудь еще, просто оберните это в округленное представление. – Sulthan
IBView - это то, что я составил себе как название подкласса UIView, в котором есть дополнительные IBDesignable. Да, я делаю один файл, который я могу повторно использовать. Так что это не так уж и важно, если нет более простого способа, но мне просто интересно, если есть. – Janneman