在我的应用程序中的详细视图(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以外的其他内容。
答案 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”的情况下做同样的事情?!