如何通过编程方式按内容自动调整标签(NSTextField)?

时间:2014-01-07 05:38:21

标签: macos cocoa autolayout nstextfield

我可以通过其内容自动调整多行NSTextField对象吗?

例如,我想使对象的宽度固定,但其高度适合其内容。那么我该如何生成布局约束呢?

2 个答案:

答案 0 :(得分:6)

按照以下步骤操作: -

1)然后在NSTextField

中选择interface builder->AttributeIsnpector->set control to LineBreak-word wrap-> set state-> Enabled

2)实现以下代码: -

-(void)controlTextDidChange:(NSNotification *)obj
{
   //if you want to width to change then uncomment below
    //    CGFloat width=[[self.txtFld cell] cellSizeForBounds:self.txtFld.bounds].width;
        CGFloat heigth=[[self.txtFld cell] cellSizeForBounds:self.txtFld.bounds].height;
        [self.txtFld setFrameSize:NSMakeSize(160, heigth+10)];
}

答案 1 :(得分:2)

是的,您可以使用NS(Attributed)String+Geometrics类别。

  

NS(属性)String + Geometrics是一对或可重复使用的类别(on   您可以添加到项目中的NSString和NSAttributedString)   提供简单的方法来获得文本所需的宽度和高度   画画。

http://www.sheepsystems.com/sourceCode/sourceStringGeometrics.html