Cocoa 设置自定义窗口的长度和宽度

Cocoa 设置自定义窗口的长度和宽度,cocoa,nswindow,Cocoa,Nswindow,对于我的应用程序,我想从应用程序本身为NSWindow设置一个自定义的长度和宽度。我已经把一切都设置好了(NSTextfields),但是我不知道该怎么做 您需要NSWindow上的setFrame:display:或setFrame:display:animate:方法 从: 参数 窗框 窗口的框架矩形 显示视图 指定窗口是否重新绘制需要显示的视图。当选择“是”时,窗口将沿其视图层次结构发送DisplayIfRequired消息,从而重新绘制所有视图。NSRect的定义如下: typedef

对于我的应用程序,我想从应用程序本身为NSWindow设置一个自定义的长度和宽度。我已经把一切都设置好了(NSTextfields),但是我不知道该怎么做

您需要NSWindow上的
setFrame:display:
setFrame:display:animate:
方法

从:

参数
窗框
窗口的框架矩形

显示视图

指定窗口是否重新绘制需要显示的视图。当选择“是”时,窗口将沿其视图层次结构发送DisplayIfRequired消息,从而重新绘制所有视图。

NSRect
的定义如下:

typedef struct _NSRect {
    NSPoint origin;
    NSSize size;
} NSRect;
typedef struct _NSSize {
    CGFloat width;
    CGFloat height;
} NSSize;
CGFloat numericalValue = [stringValue doubleValue];
NSSize
的定义如下:

typedef struct _NSRect {
    NSPoint origin;
    NSSize size;
} NSRect;
typedef struct _NSSize {
    CGFloat width;
    CGFloat height;
} NSSize;
CGFloat numericalValue = [stringValue doubleValue];
您需要先将
NSString
s转换为数字。您可以这样做:

typedef struct _NSRect {
    NSPoint origin;
    NSSize size;
} NSRect;
typedef struct _NSSize {
    CGFloat width;
    CGFloat height;
} NSSize;
CGFloat numericalValue = [stringValue doubleValue];

(我真的不记得
CGFloat
是否定义为
float
double
。我现在懒得去查它。)注意,如果
stringValue
不表示格式正确的数字,这将导致异常。

如何设置长度和宽度?这就是重点。使用所需的原点和大小组成NSRect,然后使用此方法将其发送到窗口。它将改变大小。
NSString
s不是数字。当然,
NSRect
不知道如何处理字符串。它需要
CGFloat
值,用于
width
height
。#1、编辑您的问题以添加代码#2,为什么要使用字符串来处理数字。我想,是时候回到基础上来了。你的匆忙意味着要花更长的时间来解决你的问题。谢谢,现在我消除了错误,现在我只需要设置窗口的高度和宽度
CGFloat
是32位的
float
和64位的
double
。但由于您需要制作NSSize,您可能会使用带浮点数的
NSMakeSize
,因此请尝试使用
[customWidth floatValue]
等。是的,
NSMakeSize
会更简单、更紧凑。我应该在回答中提到这一点。谢谢你帮我省去了查找
CGFloat
:-)