2012-04-18 25 views
18

sto creando cacao app in cui ho creato NSTextField di programmazione come questo,NSTextField Allineamento verticale

NSView *superView = [[NSView alloc] initWithFrame:NSMakeRect(0, 300, 1400, 500)]; 
NSTextField *myTextField = [[NSTextField alloc] initWithFrame:NSMakeRect(180, 100, 1000, 300)]; 
[myTextField setStringValue:myText]; 
[myTextField setEditable:NO]; 
[myTextField setBezeled:NO]; 
[myTextField setDrawsBackground:NO]; 
[myTextField setSelectable:NO]; 
[myTextField setFont:[NSFont fontWithName:@"Futura" size:22]]; 
[superView addSubview:myTextField]; 
[superView setAutoresizesSubviews:YES]; 
[myTextField setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; 
[self.window.contentView addSubview:superView]; 

Ora voglio allineamento verticale del mio testo e dovrebbe essere regolabile in base alla lunghezza del testo .
Qualcuno ha qualche suggerimento? Si prega di condividere il tuo suggerimento :)

Molte grazie .. !!

risposta

11

Quello che vuoi è possibile, ma dovrai creare una sottoclasse di NSTextFieldCell, e quindi usare quella sottoclasse nel tuo NSTextField. I metodi chiave che si desidera sovrascrivere sono drawingRectForBounds:, selectWithFrame:, e editWithFrame:

Here is a blog post from the fantastic Daniel Jalkut su questo, si comprende anche una versione scaricabile pronto ad andare. Il post è abbastanza vecchio ma dovrebbe comunque funzionare bene.

+0

Grazie sosborn .. !! Lasciami provare questo ... ti risponderò se ci fossero problemi in questo. :) – iUser

+0

Ok, ho la classe 'RSVerticallyCenteredTextFieldCell.h' e' RSVerticallyCenteredTextFieldCell.m' ma non so come usarla, con il mio 'myTextField'. – iUser

+0

Dai un'occhiata a NSControl (da cui NSTextField eredita). Ha un metodo chiamato setCellClass :. Anche la Guida alla programmazione dei comandi e delle celle di Apple è buona da leggere. – sosborn

1

Per regolare il campo di testo in dimensione stringa, è necessario calcolare la dimensione del testo con NSStringsizeWithFont: constrainedToSize: lineBreakMode: prima e modificare le dimensioni del campo di testo con l'impostazione della cornice.

Per l'allineamento verticale, guarda questo question (e le risposte).

+1

@iUser sta chiedendo informazioni su NSTextField, che è diverso da UITextField. NSTextField non ha la proprietà contentVerticalAlignment. – sosborn

+0

Grazie Kai .. !! Sto usando 'NSTextField' che non fornisce l'opzione' contentVerticalAlignment'. Qualche suggerimento ? – iUser

+0

Siamo spiacenti. Ho appena cambiato la mia risposta. –

-1

ignora ViewWillDraw e posiziona il tuo NSTextField al centro della sua visualizzazione padre a questo punto. Funziona anche con ridimensionamento dal vivo. È anche possibile regolare la dimensione del carattere a questo punto per trovare un carattere che si adatti alle nuove dimensioni.

+0

spiega il tuo downvote e nota che questo è stato risolto nel 2015. Questo è simile alla risposta accettata, solo che invece di fare il disegno personalizzato nel NSTextFieldCell, lo fai nel NSTextField ... –

Problemi correlati