2012-07-27 18 views
7

Jestem nowy w rozwoju Mac OSx/kakao. Podczas tworzenia mojej pierwszej aplikacji natknąłem się na kilka rzeczy, a jedną z nich jest mój problem na zielonym przycisku +, który jest przeznaczony do celów powiększania.Jak włączyć/wyłączyć przycisk powiększania (zielony + przycisk)?

Chciałbym wiedzieć, czy możliwe jest dynamiczne ustawienie zachowania przycisku powiększania okna aplikacji? Czy nie naruszam żadnych zasad zawartych w wytycznych Apple?

Chcę określić zachowanie przycisku zgodnie z określonym użytkownikiem. Powiedzmy, że użytkownik może mieć przycisk powiększania, a następnie przycisk powinien być włączony; w przeciwnym razie pozostaw przycisk wyłączony.

W takim przypadku po uruchomieniu aplikacji sprawdzam, czy użytkownik może mieć włączony przycisk powiększania. Stąd chcę dostosować zachowanie okna odnoszące się do przycisku powiększania - czy powinno być włączone czy wyłączone zgodnie z wcześniejszym sprawdzeniem trybu użytkownika.

Dzięki za pomoc!

+0

Dlaczego powiększanie jest kiedykolwiek ograniczone? Jego działanie opierałoby się na rozmiarze okna zawartości, który nie jest * tajną informacją, ponieważ paski przewijania również tego wymagają. Użytkownik może obejść ograniczenie, zmieniając rozmiar okna. Rozmiar okna jest końcowym atrybutem po stronie użytkownika, a nie czymś, co powinno być kontrolowane przez koniec serwera. – CTMacUser

Odpowiedz

9

Możesz uzyskać odniesienie do tego przycisku za pomocą standardWindowButton:NSWindowZoomButton, a następnie zrobić, co możesz zrobić z dowolnym NSButton.

Aktualizacja (w SWIFT):

var button = view.window?.standardWindowButton(NSWindowButton.ZoomButton) 
button?.enabled = false 
+0

Zobacz odpowiedź Sam Soffes poniżej, aby uzyskać prawidłowy sposób wykonania tej czynności. –

+1

Dzięki! Jeśli chcesz zachować możliwość zmiany rozmiaru okna, ale nie chcesz, aby aplikacja wypełniała cały ekran po naciśnięciu przycisku, ten kod wyłącza zielony przycisk zoomu. – balazs630

6

Chwytając przycisk i włączone ustawienie nie jest idealny. Najlepszym sposobem (10.6+) jest użycie setStyleMask:. Oto, jak to zrobić:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask 

Możesz dodawać i usuwać style według uznania. Innym sposobem zrobienia tego bez zmiany stylu jest ustawienie minSize i maxSize na taki sam rozmiar. Spowoduje to również wyłączenie zmiany rozmiaru.

1

w Swift 3, tutaj jest najprostszym sposobem, aby usunąć możliwość:

var style = window.styleMask 
style.remove(.resizable) 
window.styleMask = style 

I zwykle to zrobić w viewDidAppear na widok kontrolerów w storyboardy, które mają sterownik okna utworzonego dla nich automatycznie zamiast jednego mogę zadzierać z.