Удаление Границы от NSBrowser
Как видно из заголовка, я на самом деле хочу удалить границу из элемента управления NSBrowser. Родителями являются NSView и NSControl. В самом NSBrowser нет доступных методов и родительских элементов управления. Этот кажется совершенно недокументированным.
Что касается причины удаления границы, потому что она программно пристыкована к другому представлению, поэтому иерархия представления означает, что граница уже есть.
Есть идеи?
4 ответа
Просто вставьте это равнина NSView
("Пользовательский вид" в IB) и сделать рамку браузера "смещенной" на 1 пункт во всех направлениях от границ содержащего вида. Содержащий вид обрезает браузер, чтобы устранить границу. Затем поместите содержимое, содержащее представление, в иерархию окружающих видов, а не добавляйте браузер напрямую.
NSBrowser использует NSBrowserCell для реализации своего интерфейса. Это наследует от NSCell. NSCell должен предоставить необходимые вам методы.
Из ссылки на класс NSCell... Управление атрибутами отображения - setBezeled: - isBezeled - setBordered: - isBordered - isOpaque - setControlTint: - controlTint - setBackgroundStyle: - backgroundStyle - interiorBackgroundStyle
Ни один из существующих ответов не работал для меня.
- Встраивание в
NSView
выглядело как приемлемый обходной путь, но это обрезает браузер. NSScrollView
не суперклассNSBrowser
,- Слой не используется для этой границы, это
nil
, NSBrowserCell
не имеет ничего общего сNSBrowser
граница
использование borderType: NSBorderType
свойство (так же, как в некоторых других классах), устанавливая его в Interface Builder. В Identity Inspector (⌘+⎇+3) добавьте к пользовательским атрибутам времени выполнения:
Ключевой путь: borderType
Тип: Number
Стоимость: 0
(соответствует NSBorderType.noBorder
)
Для тех, кто еще ищет решение. NSBrowser является подклассом NSView. Вы можете установить ширину границы слоя NSView равной 0:
(Swift)
self.layer?.borderWidth = 0