gpt4 book ai didi

cocoa - NSTextField 宽度和自动布局

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

我正在尝试以编程方式创建一个 NSTextField

我想使用这个带有自动布局的NSTextField,因此它的宽度将自动定义以显示整行(只有一行文本)。

问题是 textField.intrinsicContentSizetextField.fittingSize 的水平坐标都有 -1 和 0 值,如下代码的输出是:textField.intrinsicContentSize={-1, 21}textField.fittingSize={0, 21}

代码:

NSTextField* textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 10, 24)];    
NSString* str = @"One line of text here.";
[textField setStringValue: str];
[textField setTranslatesAutoresizingMaskIntoConstraints:NO];
[textField invalidateIntrinsicContentSize];

NSLog(@"textField.intrinsicContentSize=%@", NSStringFromSize(textField.intrinsicContentSize));
NSLog(@"textField.fittingSize=%@", NSStringFromSize(textField.fittingSize));

这使得文本字段具有由自动布局分配的零宽度。

我应该如何获取文本字段的 fittingSizeintrinsicContentSize 属性的有意义的值,以便它们反射(reflect)文本字段的内容?

最佳答案

不使用 fittingSize 计算文本字段最佳宽度的另一种方法是使用以下代码(替换 John Sauer 的 sizeTextFieldWidthToFit 方法):

- (void) sizeTextFieldWidthToFit {
[textField sizeToFit];
CGFloat newWidth = NSWidth(textField.frame);
textFieldWidthConstraint.constant = newWidth;
}

您可以将 textFieldWidthConstraint 的优先级设置为低于另一个不等式约束的优先级,以表示您的要求的最小大小为 25。

关于cocoa - NSTextField 宽度和自动布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643180/

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