Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法自动调整NSView下NSTextField的大小(作为菜单项)_Text_Height_Nsview_Nstextfield - Fatal编程技术网

无法自动调整NSView下NSTextField的大小(作为菜单项)

无法自动调整NSView下NSTextField的大小(作为菜单项),text,height,nsview,nstextfield,Text,Height,Nsview,Nstextfield,我是一个经验不足的用户,试图通过简单的项目创建过程学习。。。我请求您的帮助,因为我已经整整两天没有找到有效的解决方案了,我正在挖掘Xcode帮助和Google 我有一个简单的MacOS X 10.6.X应用程序,在代码中为XIB状态栏菜单创建一个额外的NSMenuItem。在我的AppDelegate上,我创建了一个从MainMenu.xib加载NSView的对象: // Add menu entry for NSView object NSMenuItem* newItem = [[NSMen

我是一个经验不足的用户,试图通过简单的项目创建过程学习。。。我请求您的帮助,因为我已经整整两天没有找到有效的解决方案了,我正在挖掘Xcode帮助和Google

我有一个简单的MacOS X 10.6.X应用程序,在代码中为XIB状态栏菜单创建一个额外的NSMenuItem。在我的AppDelegate上,我创建了一个从MainMenu.xib加载NSView的对象:

// Add menu entry for NSView object
NSMenuItem* newItem = [[NSMenuItem alloc] initWithTitle:@"Placeholder"
                                        action:nil
                                        keyEquivalent:@""];
[newItem setView:theView];
[newItem setEnabled:NO];
[newItem setTarget:self];
[calendarMenu insertItem: newItem atIndex:0];
[newItem release];
在我的MainMenu.xib中,除了菜单结构之外,我还有另一个对象设置为NSView,在它下面,NSTextField占据了视图的所有空间。菜单似乎加载了视图窗口

后来,我将一些字符串设置为NSTextField,但无法相应地调整高度;要么太多,要么太长:

// Crop last newline character
NSString *menuCelebrations = [NSString stringWithString:
        [celebName substringToIndex:([celebName length] - 1)]];
NSFont *msgFont = [NSFont menuBarFontOfSize:12.0];

// Set attributes
[theTextField setFont:msgFont];
[theTextField setStringValue:menuCelebrations];
顶部菜单现在显示我想要的较长文本、包装文本等,但我无法使用以下内容正确调整高度:

theView setFrame: NSMakeRect([theView frame].origin.x,
            [theView frame].origin.y,
            calendarMenu.size.width,
            newHeightFloat)];
作为一名新手,我尝试了以下自动调整大小的方法,但显然没有效果:

[theTextField sizeToFit];
[theTextField autoresizesSubviews];
[theView setAutoresizingMask:NSViewHeightSizable];
[theView setNeedsDisplay:YES];
不用说,我在Interface Builder中尝试了许多属性组合,其中文本字段随视图等调整大小。。什么都没用。。。我仍然无法找到一种方法来计算和设置作为子对象的NSView或NSTextFieled的高度

我在这里找到了想法和代码,但人们提到了NSLayoutManager、NSTextStorage和NSTextContainer的使用,苹果在文档中的某个地方建议使用这些工具,查找章节/参考计算文本高度,其中包含一些代码,但未能实现;其他人则认为苹果公司计算的是长方体,但渲染长方体时会漏掉底部的一些像素

苹果公司建议使用Matt Neuburg的工作代替NSLayout,对一个示例项目进行适当的计算,这似乎很有效,但在NSTextView对象上

我必须为此NSView创建单独/自定义类吗?我应该更喜欢NSTextView而不是NSTextField吗

有没有人把高度调整到合适的尺寸?如果您能提供一些代码示例,我将不胜感激

我是否在没有正确理解现有方法的情况下挖掘得太深了