gpt4 book ai didi

objective-c - 将 NSTextView subview 添加到 NSTabViewItem

转载 作者:行者123 更新时间:2023-12-03 17:13:17 24 4
gpt4 key购买 nike

好吧,我承认我从来没有那么擅长以编程方式操作 NSView 及其大小调整。所以,我在这里:

  • 我们有一个标签 View
  • 我们正在添加一个新的 NSTabViewItem
  • 每个 NSTabViewItem 中都会包含一个 NSTextView,它会拉伸(stretch)并占据 NSTabViewItem 的所有空间。

这是我的代码:

NSTabViewItem *newItem = [[(NSTabViewItem*)[NSTabViewItem alloc] initWithIdentifier:newDocument] autorelease];

NSTextView* tv = [[NSTextView alloc] initWithFrame:NSZeroRect];
[tv makeStretchable];

[[newItem view] setAutoresizesSubviews:YES];
[[newItem view] addSubview:tv];
[newItem setLabel:@"Untitled"];
[tabView addTabViewItem:newItem];
[tabView selectTabViewItem:newItem];

我的 NSView 类别(用于 makeStretchable):

#define FIX_LEFT    NSViewMinXMargin
#define FIX_RIGHT NSViewMaxXMargin
#define FIX_TOP NSViewMinYMargin
#define FIX_BOTTOM NSViewMaxYMargin
#define FIX_WIDTH NSViewWidthSizable
#define FIX_HEIGHT NSViewHeightSizable

- (void)makeStretchable
{
[self setAutoresizingMask:FIX_LEFT|FIX_TOP|FIX_BOTTOM|
FIX_RIGHT|FIX_WIDTH|FIX_HEIGHT];
}

问题:

  • NSTextView 很小(就像只有一行),位于每个 NSTabViewItem 的正中心
<小时/>

我确信这与我的调整大小蒙版有关(或者可能与我添加 View 的方式有关?),但我仍然无法弄清楚。有什么想法吗?

最佳答案

您的所有 FIX_* 都应该是 FLEX_*,包括 FIX_LEFT、FIX_RIGHT 等。

现在将 makeStretchable 更改为:

[self setAutoresizingMask:FLEX_WIDTH|FLEX_HEIGHT];

应该可以了。 :)

一些历史:
在旧的 Interface Builder(2.x 及之前版本)中, Spring 代表“设置”位。在新的 Interface Builder(从 3 及更高版本)中, Spring 被“夹具”取代,这更有意义,但这也意味着当您以编程方式更改标志时,您需要做一些相反的思考。

因此,这些标志的含义(来自 Apple 的文档)是:

NSViewMinXMargin:“接收者与其父 View 之间的左边距是灵活的。”
NSViewWidthSizing:“接收器的宽度是灵活的。”
NSViewMaxXMargin:“接收者与其父 View 之间的右边距是灵活的。”
...等等;例如。所有设置位都是“灵活的”,否则它们是“固定的”...

关于objective-c - 将 NSTextView subview 添加到 NSTabViewItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com