Cocoa setFrame创建的NSView在两个维度上都比预期的小15像素

Cocoa setFrame创建的NSView在两个维度上都比预期的小15像素,cocoa,macos,nsview,Cocoa,Macos,Nsview,我有一个令人费解的问题。我有一个指向在nib中初始化的视图的指针。我向NSView发送了以下消息: [myNSView setFrame:NSMakeRect(0,0,816,1056)]; 但是当我逐步通过调试器时,myNSView有一个{{0,0},{8011041}框架。矩形的尺寸比我指定的小15!这种情况经常发生。如果我在一行中指定两个[setFrames],一切都正常,但这当然不是答案 为什么设置帧失败?15px正好是NSScroller在NSRegularControlSize下的

我有一个令人费解的问题。我有一个指向在nib中初始化的视图的指针。我向NSView发送了以下消息:

[myNSView setFrame:NSMakeRect(0,0,816,1056)];
但是当我逐步通过调试器时,
myNSView
有一个
{{0,0},{8011041}
框架。矩形的尺寸比我指定的小15!这种情况经常发生。如果我在一行中指定两个
[setFrames]
,一切都正常,但这当然不是答案


为什么设置帧失败?

15px正好是NSScroller在NSRegularControlSize下的大小

我猜您已经将NSScrollView配置为自动隐藏滚动条


尝试在NIB中关闭scrollView的水平和垂直滚动条,如果这解决了问题,您将知道从那里看什么。这与scrollView的clipView自动调整documentView的大小有关。当滚动条出现时,clipView本身正在自动调整大小;直接在您将documentView设置为需要滚动条的frameSize(我猜是100%设置)之后。

15px正好是NSScroller在NSRegularControlSize下的大小

我猜您已经将NSScrollView配置为自动隐藏滚动条


尝试在NIB中关闭scrollView的水平和垂直滚动条,如果这解决了问题,您将知道从那里看什么。这与scrollView的clipView自动调整documentView的大小有关。当滚动条出现时,clipView本身正在自动调整大小;直接在您将documentView设置为需要滚动条的frameSize(我猜是100%设置)之后。

我真的不知道。这应该行得通。你能提供更多的上下文吗?我在画自定义内容,比如一页文本。我从一个滚动视图开始,其中嵌入了一个页面视图。我有两个动作,适合页面和100%查看(类似于其他观众)。我希望能够放大和缩小。为此,我更改了页面视图的框架大小,我希望滚动视图能够处理左右平移。除了页面视图奇怪的大小调整行为外,它基本上是有效的。除此之外,我还不知道。对不起。:)我把这个问题投了赞成票,所以也许其他人可以帮你。祝你好运!我真的不知道。这应该行得通。你能提供更多的上下文吗?我在画自定义内容,比如一页文本。我从一个滚动视图开始,其中嵌入了一个页面视图。我有两个动作,适合页面和100%查看(类似于其他观众)。我希望能够放大和缩小。为此,我更改了页面视图的框架大小,我希望滚动视图能够处理左右平移。除了页面视图奇怪的大小调整行为外,它基本上是有效的。除此之外,我还不知道。对不起。:)我把这个问题投了赞成票,所以也许其他人可以帮你。祝你好运!太棒了,非常感谢你!我打开了卷轴,所有的东西都合上了。所以,推理是这样的:1。我将页面视图大小更改为2。滚动视图更新以包括滚动条3。clipview调整大小以容纳滚动条,并调整包含页面视图的子视图的大小。对吗?是的,确切地说:)如果你围绕着你的setFrame:调用[[theScrollView contentView]setAutoResizesSubView:NO];完成后再打开它,我想应该可以了。太棒了,非常感谢!我打开了卷轴,所有的东西都合上了。所以,推理是这样的:1。我将页面视图大小更改为2。滚动视图更新以包括滚动条3。clipview调整大小以容纳滚动条,并调整包含页面视图的子视图的大小。对吗?是的,确切地说:)如果你围绕着你的setFrame:调用[[theScrollView contentView]setAutoResizesSubView:NO];完成后再将其打开,我认为这应该会起作用。