2013-03-16 74 views
1

在我的应用程序的detailview(滚动视图)我有一个UILabel获取将有大约1000个单词的文本。调整大小的UILabel捕捉到初始大小

我想调整它,因此标签配合 - 能正常工作至今

-(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; 
} 

当导航到的DetailView预期的标签大小。 现在奇怪的事情是:我想向下滚动UILabel对齐回到初始大小,以便只有第一个单词是可见的。

我该怎么做才能避免这种行为?

更新: 当我删除标签,并放入一个新的它可以正常工作。奇怪的行为开始时,我改变字体大小为17时的其他东西。

+0

而不是采取一个标签采取textView – 2013-03-16 13:25:53

+0

我通过textview获得相同的行为。其调整大小的对象的初始高度,当我开始滚动:( – alexdd55 2013-03-16 13:31:00

+0

可以请你登录你的newFrame和storyContent帧 – 2013-03-16 13:32:59

回答

0

我现在的解决方案(或解决方法)现在是停用“使用Autolayout”(thx到Mark Kryzhanouski),它解决了捕捉问题。

随着不具有自动布局了滚动不会自动调整大小,所以我说

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

,并计算出一个新的框架尺寸为它的内容的大小,我已经从上面知道,再加上静态的内容,这将是总是显示。

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

也许有一种方法可以用“Use Autolayout”激活吗?!