Iphone 具有固定宽度和灵活高度的UILabel

Iphone 具有固定宽度和灵活高度的UILabel,iphone,objective-c,sdk,Iphone,Objective C,Sdk,我在细节视图控制器中有一个UILabel,因此它的内容会根据所选的表行而变化。我有一个问题,我会为我的UILabel设置一个固定的宽度,并根据文本设置一个动态的高度。我该怎么做?(我为我的错误感到抱歉,但我不是英国人)你可以做到。下面是代码 UILabel *yourlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, sizeToFit)]; yourlabel.numberOfLines = 0; 对于任何查询,请发表评论

我在细节视图控制器中有一个UILabel,因此它的内容会根据所选的表行而变化。我有一个问题,我会为我的UILabel设置一个固定的宽度,并根据文本设置一个动态的高度。我该怎么做?(我为我的错误感到抱歉,但我不是英国人)

你可以做到。下面是代码

UILabel *yourlabel = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, sizeToFit)];
yourlabel.numberOfLines = 0;

对于任何查询,请发表评论。

我喜欢子类
UILabel
来为我做这件事

AutosizingLabel.h

#import <UIKit/UIKit.h>


@interface AutosizingLabel : UILabel {
    double minHeight;
}

@property (nonatomic) double minHeight;

- (void)calculateSize;

@end    
要使用此选项,请在项目中导入/创建.h和.m文件。然后,如果您在代码中创建
UILabel
,它将如下所示:

#import "AutosizingLabel.h"

- (void)viewDidLoad {
    [super viewDidLoad];

    AutosizingLabel *label = [[AutosizingLabel alloc] init];
    label.text = @"Some text here";
    [self.view addSubview:label];
}

如果您使用的是XIB,则可以选择任意UILabel并单击右侧栏中的Identity Inspector,将其类设置为
AutosizingLabel
。在任何一种情况下,设置
.text
属性都会自动更新标签的大小。

我不能使用sizeToFit作为cRect高度的值,Xcode不允许我这样做。。它说这是一个“未声明的标识符”,请检查此链接。我认为它将解决您的问题。非常感谢。然后,我如何在详细视图控制器中使用此子类来为我的UILabel设置动态高度?从iOS 7开始,将UILineBreakModeWordWrap更改为NSLineBreakByWordWrapping。@stas-True,但实际上,既然我们有了NSAttributedString,整个calc函数应该重写以支持它。如果我有时间的话,我会更新。是的,@JoshHudnall,就像按下回车键一样,我想到了这一点,因为sizeWithFont:constrainedToSize:lineBreakMode:也不推荐使用。
#import "AutosizingLabel.h"

- (void)viewDidLoad {
    [super viewDidLoad];

    AutosizingLabel *label = [[AutosizingLabel alloc] init];
    label.text = @"Some text here";
    [self.view addSubview:label];
}