2013-01-18 3 views
9

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

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

Любые идеи?

+0

Да, следовательно, почему я упомянул NSView и NSControl – Kezzer

ответ

2

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

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

+0

Я не знаю, как я пропустил тот. Я попробую это скоро, ура! – Kezzer

+0

Я пробовал некоторые варианты без везения. Использование setBordered, похоже, ничего не делает. Кажется, никто этого не делал раньше, что я считаю странным. – Kezzer

1

Убрать границу на NSScrollView, если она включена.

+0

Это первое, что я изучил. Нет доступных вариантов. В документах отображаются параметры перечисления границ, но нет способа установить границу. – Kezzer

+0

Это странно ... IB может это сделать. Тогда позвольте мне взглянуть. –

+0

Насколько я знаю, 'NSBrowser' имеет другую настройку для большинства прокручиваемых компонентов в AppKit. Вместо того, чтобы быть заключенным в виде прокрутки (например, «NSTableView» ожидает, например), вместо этого он предоставляет собственное внутреннее представление прокрутки. –

1

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

+0

Ни один из других ответов не работал для меня. Я выполнил этот ответ, установив все четыре ограничения автоматической компоновки NSBrowser на -1 в супервизор (охватывающий простой NSView). Работает как чемпион. –

0

Для тех, кто все еще ищет решение. NSBrowser является подклассом NSView. Вы можете установить ширину границы слоя NSView до 0:

(Swift)

self.layer?.borderWidth = 0