2012-07-27 22 views
7

Sono nuovo nello sviluppo Mac OSx/Cocoa. Durante la creazione della mia prima app, mi sono imbattuto in alcune cose, e una delle quali è il mio problema sul pulsante verde + che è inteso per scopi di zoom.Come abilitare/disabilitare il pulsante di zoom (pulsante verde +)?

Mi piacerebbe sapere se è possibile impostare dinamicamente il comportamento del pulsante di zoom della finestra dell'app? Non sto violando nessuna regola dalle linee guida di Apple?

Desidero specificare il comportamento del pulsante in base a un utente specifico. Supponiamo che l'utente abbia un pulsante di zoom, quindi il pulsante dovrebbe essere abilitato; altrimenti, lasciare il pulsante disabilitato.

In questo caso, quando l'app viene avviata, sto verificando se l'utente può avere un pulsante di zoom abilitato. Da qui voglio personalizzare il comportamento della finestra relativa al pulsante di zoom - se deve essere abilitato o disabilitato in base al controllo preventivo della modalità dell'utente.

Grazie in anticipo per l'aiuto!

+0

Perché lo zoom è mai limitato? Le sue azioni si baserebbero sulla dimensione della finestra del contenuto, che è * non * informazione segreta, poiché anche le barre di scorrimento ne hanno bisogno. L'utente può aggirare la restrizione dimensionando la finestra da sé. La dimensione della finestra è un attributo del terminale utente, non qualcosa che dovrebbe essere controllato dal server. – CTMacUser

risposta

9

È possibile ottenere un riferimento a tale pulsante con standardWindowButton:NSWindowZoomButton e quindi fare tutto ciò che è possibile fare con qualsiasi NSButton.

aggiornamento (in rapido):

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

Vedere la risposta di Sam Soffes qui sotto per il modo corretto di farlo. –

+1

Grazie! Se si desidera mantenere ridimensionabile la finestra, ma non si desidera che l'applicazione riempia l'intero schermo alla pressione del pulsante, questo codice disabilita il pulsante di zoom verde. – balazs630

6

Afferrando il pulsante e impostazione abilitato non è l'ideale. Il modo migliore (10.6+) è utilizzare setStyleMask:. Ecco come procedere:

window.styleMask = NSTitledWindowMask | NSClosableWindowMask 

È possibile aggiungere o rimuovere stili a piacere. Un altro modo per farlo senza modificare lo stile è impostare minSize e maxSize nella stessa misura. Questo disabiliterà anche il ridimensionamento.

1

In Swift 3, ecco il modo più semplice per rimuovere la possibilità:

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

ho comunemente fare questo in viewDidAppear per controller di vista in storyboard che hanno un controller finestra creata per loro automaticamente invece di uno che posso pasticciare

Problemi correlati