调整大小的UILabel快速恢复到初始大小

时间:2013-03-16 13:23:36

标签: iphone ios uilabel

在我的应用程序中的详细视图(Scrollview)上,我有一个UILabel,它可以获得大约1000个单词的文本。

我想调整大小以使标签适合 - 到目前为止工作正常

-(void) viewDidAppear:(BOOL)animated {
NSString *message = storycontent.text;
CGSize maximumLabelSize = CGSizeMake(280,5000);
CGSize expectedLabelSize = [message sizeWithFont:storycontent.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];
CGRect newFrame = storycontent.frame;
newFrame.size.height = expectedLabelSize.height;
storycontent.frame = newFrame;
}

导航到该详细视图时,标签会按预期调整大小。 现在奇怪的是:我想向下滚动UILabel的那一刻会回到初始大小,这样只有第一个单词可见。

我可以做些什么来避免这种行为?

更新: 当我删除标签并放入一个新标签时它工作正常。奇怪的行为开始于我将字体大小更改为17以外的其他内容。

1 个答案:

答案 0 :(得分:0)

我目前的解决方案(或解决方法)现在停用“使用Autolayout”(对Mark Kryzhanouski来说),这解决了捕捉问题。

由于没有Autolayout,ScrollView不会自动调整大小,所以我添加了

@property (retain, nonatomic) IBOutlet UIScrollView *scroller;

并为其计算了一个新的FrameSize,其内容大小我已经从上面知道,加上将始终显示的静态内容。

NSString *message = storycontent.text;
CGSize maximumLabelSize = CGSizeMake(280,5000);
CGSize expectedLabelSize = [message sizeWithFont:storycontent.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByWordWrapping];

[scroller setContentSize:CGSizeMake(280,expectedLabelSize.height + 400)];

也许有办法在激活“使用Autolayout”的情况下做同样的事情?!