Ben*_*Uri 9 cocoa nstextfield nstextview autolayout
我试图以NSTextField编程方式创建.
我想在NSTextField自动布局中使用它,因此它的宽度将自动定义以显示整行(只有一行文本).
问题是,textField.intrinsicContentSize并且textField.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));
Run Code Online (Sandbox Code Playgroud)
这使文本字段具有由自动布局指定的零宽度.
我应该怎么做才能为有意义的值fittingSize,并intrinsicContentSize因此它们反映了文本字段的内容文本字段的属性?
另一种在不使用的情况下计算文本字段最佳宽度的方法fittingSize是使用以下代码(替换John Sauer的sizeTextFieldWidthToFit方法):
- (void) sizeTextFieldWidthToFit {
[textField sizeToFit];
CGFloat newWidth = NSWidth(textField.frame);
textFieldWidthConstraint.constant = newWidth;
}
Run Code Online (Sandbox Code Playgroud)
您可以将textFieldWidthConstraint的优先级设置为低于另一个不等式约束的优先级,将您的需求表示为最小值25.
| 归档时间: |
|
| 查看次数: |
6172 次 |
| 最近记录: |