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 次 |
最近记录: |