2009-10-12 1 views
0

Для моего приложения я хочу установить пользовательскую длину и ширину для моего NSWindow из самого приложения. У меня все настроено (NSTextfields), но я в тупике, как я должен это делать.set custom length и width NSWindow

ответ

3

NSRect определяется следующим образом:

typedef struct _NSRect { 
    NSPoint origin; 
    NSSize size; 
} NSRect; 

И NSSize определяется следующим образом:

typedef struct _NSSize { 
    CGFloat width; 
    CGFloat height; 
} NSSize; 

Вы должны конвертировать NSString с до номеров первой. Вы можете сделать это так:

CGFloat numericalValue = [stringValue doubleValue]; 

(я на самом деле не помню, если CGFloat определяется как float или double я просто слишком ленив, чтобы посмотреть его прямо сейчас.). Обратите внимание, что это приведет к исключение, если stringValue не представляет собой правильно отформатированное число.

+0

спасибо, теперь я избавился от ошибок, теперь мне просто нужно установить эту высоту и ширину к окну –

+1

'CGFloat' является' float' в 32-битном и 'double' в 64-битном режиме. Но поскольку вам нужно сделать NSSize, вы, вероятно, будете использовать' NSMakeSize', который принимает float, поэтому попробуйте использовать '[ Custo mWidth floatValue] 'и т. д. – Abizern

+0

Да,' NSMakeSize' будет проще и компактнее. Я должен был упомянуть об этом в своем ответе. Спасибо, что сэкономили мне усилия по поиску 'CGFloat' :-) – Alex

4

Вы хотите использовать метод setFrame:display: или setFrame:display:animate: на NSWindow.

От documentation:

- (void)setFrame:(NSRect)windowFrame display:(BOOL)displayViews 

Параметры
windowFrame
Рамка прямоугольника для окна.

displayViews
Указывает перерисовывается ли окно мнения, которые должны быть отображены. Когда ДА, окно отправляет сообщение displayIfNeeded вниз по своей иерархии представлений, тем самым перерисовывая все виды.

+0

как установить длину и ширину? –

+0

Серьезно? В этом весь смысл. Составьте NSRect с желаемым происхождением и размером, а затем отправьте его в свое окно с помощью этого метода. Он изменит размер. –

+0

Вот что я пробовал, но я получил ошибку «несовместимые типы в задании» –