我有一个UITextView
,它会根据RSS Feed动态设置其文本。 textview是UIScrollview
的子视图。最终,我正在创建一个移动报纸应用程序,因此用户应该能够滚动文本(和其他子视图)。
在IB中创建视图后,我添加了
NSString *sourceCode = [NSString stringWithContentsOfURL:[NSURL URLWithString:self.URL] encoding:NSUTF8StringEncoding error:&error];
sourceCode = [self parseHTMLText:sourceCode];
CGSize maximumLabelSize = CGSizeMake(320,9999);
CGSize txtStringSize = [sourceCode sizeWithFont:self.body.font
constrainedToSize:maximumLabelSize];
CGRect newlblFrame = CGRectMake(0, 0, 320, txtStringSize.height);
self.body.frame = newlblFrame; //body is the textview
self.body.text = sourceCode;
self.scroll.contentSize=CGSizeMake(320, self.body.frame.size.height+300); //scroll is scrollview
典型的NSLog
会显示body frame = {{0, 0}, {320, 2088}} scrollview frame = {{0, 0}, {320, 417}} scrollview content size = {320, 2388}
但是,当我运行应用程序时,正文维护其界面构建器高度约为196,并且滚动视图不会滚动(当我移动它时,它只会弹回原始位置)
另一方面,当我尝试使用CGRectMake手动更改textview的框架时,NSLog会显示正确的高度,但视图看起来并不相同。我确保它在IB中正确连接,因为我可以调整其他属性,例如背景颜色。
修改
在我将textview的cliptoBounds属性设置为NO后,textview现在调整其高度并尝试显示整个文本。但是,它会在屏幕的末尾切断,我仍然无法滚动。
这是我目前看到的。为方便起见,我将scrollview背景颜色设置为灰色。我不确定为什么部分scrollview部分是白色和部分灰色。 (标题)是一个单独的标签btw)
答案 0 :(得分:5)
我通过将代码从viewDidLoad
移动到viewDidAppear
来解决问题。显然这是一个特定于Xcode 4.5的问题,由于AutoLayout功能覆盖了viewDidLoad
方法中的逻辑。可以找到更好的解释here。
答案 1 :(得分:3)
我希望这会对你有所帮助
self.scrollview.contentSize = CGSizeMake(320,label.frame.size.height + 30);
答案 2 :(得分:1)
尝试添加:
[_scrollView setClipsToBounds:YES];
答案 3 :(得分:0)
试试这个:
CGSize maximumSize = CGSizeMake(200.0, 30.0); // Specify your size. It was for my screen.
UIFont *txtFont = <Ur Font size & Var>;
//new
//fontValue = txtFont;
//new
lblValue.font = txtFont;
lblValue.lineBreakMode = UILineBreakModeWordWrap;
CGSize txtStringSize = [commentTxt sizeWithFont:txtFont
constrainedToSize:maximumSize
lineBreakMode:lblValue.lineBreakMode];
CGRect newlblFrame = CGRectMake(105.0, y, 200.0, txtStringSize.height);
lblValue.frame = newlblFrame;
lblValue.text = @"Your String";
此设置后滚动内容大小。希望它对你有用。它对我有用。
答案 4 :(得分:0)
尝试以下列方式解决。
// adjust the height of UITextView with content height
CGRect frame = self.body.frame;
frame.size.height = self.body.contentSize.height;
self.body.frame = frame;
// adjust UIScrollView's height with the height of UITextView
self.scroll.frame = frame;