1

在我的应用程序的详细视图(滚动视图)上,我有一个 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 以外的值时,奇怪的行为就开始了。

4

1 回答 1

0

我当前的解决方案(或解决方法)现在是停用“使用自动布局”(感谢 Mark Kryzhanouski),这解决了捕捉问题。

由于没有自动布局,滚动视图不会自动调整大小,所以我添加了

@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)];

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

于 2013-03-16T15:37:04.630 回答