Удаление Границы от NSBrowser

Как видно из заголовка, я на самом деле хочу удалить границу из элемента управления NSBrowser. Родителями являются NSView и NSControl. В самом NSBrowser нет доступных методов и родительских элементов управления. Этот кажется совершенно недокументированным.

Что касается причины удаления границы, потому что она программно пристыкована к другому представлению, поэтому иерархия представления означает, что граница уже есть.

Есть идеи?

4 ответа

Просто вставьте это равнина NSView ("Пользовательский вид" в IB) и сделать рамку браузера "смещенной" на 1 пункт во всех направлениях от границ содержащего вида. Содержащий вид обрезает браузер, чтобы устранить границу. Затем поместите содержимое, содержащее представление, в иерархию окружающих видов, а не добавляйте браузер напрямую.

NSBrowser использует NSBrowserCell для реализации своего интерфейса. Это наследует от NSCell. NSCell должен предоставить необходимые вам методы.

Из ссылки на класс NSCell... Управление атрибутами отображения - setBezeled: - isBezeled - setBordered: - isBordered - isOpaque - setControlTint: - controlTint - setBackgroundStyle: - backgroundStyle - interiorBackgroundStyle

Удалить границу на NSScrollView что это вложено в.

Ни один из существующих ответов не работал для меня.

  • Встраивание в 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
Другие вопросы по тегам