2013-01-18 12 views
9

Zgodnie z tytułem, faktycznie chcę usunąć obramowanie z kontrolki NSBrowser. Rodzicami są NSView i NSControl. Nie ma dostępnych metod w samym programie NSBrowser ani w kontrolkach nadrzędnych. Ten wydaje się całkowicie nieudokumentowany.Usuwanie obramowania z NSBrowser

Jeśli chodzi o przyczynę usunięcia granicy, ponieważ programowo jest ona zadokowana do innego widoku, więc hierarchia widoków oznacza już granicę.

Wszelkie pomysły?

+0

Tak, więc dlaczego wspomniałem NSView i NSControl – Kezzer

Odpowiedz

2

NSBrowser używa NSBrowserCell do implementacji swojego interfejsu. To dziedziczy z NSCell. NSCell powinien zapewnić potrzebne metody.

Od NSCell odniesienie klasy ... zarządzający Wyświetlacz Atrybuty - setBezeled: - isBezeled - setBordered: - isBordered - isOpaque - setControlTint: - controlTint - setBackgroundStyle: - backgroundStyle - interiorBackgroundStyle

+0

Nie jestem pewien, jak brakowało mi tego. Spróbuję tego wkrótce, okrzyki! – Kezzer

+0

Próbowałem odmiany bez szczęścia. Korzystanie z setBordered wydaje się nie robić nic. Wygląda na to, że nikt wcześniej tego nie robił, co wydaje mi się dziwne. – Kezzer

1

Usuń obramowanie z NSScrollView, w którym jest on zamknięty.

+0

To pierwsza rzecz, na którą patrzyłem. Nie ma dostępnych opcji. Dokumenty ujawniają opcje wyliczania obramowania, ale nie ma sposobu na ustawienie granicy. – Kezzer

+0

To dziwne ... IB może zdecydowanie to zrobić. Pozwól mi więc rzucić okiem. –

+0

O ile mi wiadomo, 'NSBrowser' ma inną konfigurację do większości przewijalnych komponentów w AppKit. Zamiast zawierać się w widoku przewijania (jak na przykład 'NSTableView'), zamiast tego zapewnia on własny wewnętrzny widok przewijania. –

1

Wystarczy osadzić zwykły NSView ("Widok niestandardowy" w IB) i sprawić, by ramka przeglądarki "wystartowała" o 1 punkt we wszystkich kierunkach z granic widoku zawierającego. Widok zawierający zamknie przeglądarkę, aby wyeliminować obramowanie. Następnie umieść widok zawierający widok w otaczającej hierarchii widoków, zamiast bezpośrednio dodawać przeglądarkę.

+0

Żadna z pozostałych odpowiedzi nie sprawdziła się u mnie. Zaimplementowałem tę odpowiedź, ustawiając wszystkie cztery ograniczenia automatycznego układu NSBrowser na -1 na superview (otaczający zwykły NSView). Działa jak mistrz. –

0

Dla tych, którzy wciąż szukają rozwiązania. NSBrowser jest podklasą NSView. Można ustawić szerokość obramowania warstwa NSView do 0:

(SWIFT)

self.layer?.borderWidth = 0