1

我有一个UITextView,它从 RSS 提要动态设置其文本。textview 是 a 的子视图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}

但是,当我运行应用程序时,body 将其界面构建器高度保持在 196 左右,并且滚动视图不会滚动(当我移动它时,它只是弹回原来的位置)

附带说明一下,当我尝试使用 CGRectMake 手动更改 textview 的框架时,NSLog 显示正确的高度,但视图看起来并没有什么不同。我确保它在 IB 中正确连接,因为我可以调整其他属性,例如背景颜色。

编辑:

在我将 textview 的 cliptoBounds 属性设置为 NO 后,textview 现在会调整其高度并尝试显示整个文本。但是,它在屏幕末尾切断,我仍然无法滚动。

这是我目前看到的。为了方便起见,我将滚动视图的背景颜色设为灰色。我不确定为什么部分滚动视图部分为白色,部分为灰色。(标题)是一个单独的标签btw)

在此处输入图像描述

4

5 回答 5

5

我通过将代码从移动viewDidLoadviewDidAppear. 显然,这是一个 Xcode 4.5 特定问题,由 AutoLayout 功能覆盖viewDidLoad方法中的逻辑引起。可以在这里找到更好的解释。

于 2012-10-26T22:52:47.493 回答
3

我希望这能帮到您

self.scrollview.contentSize=CGSizeMake(320, label.frame.size.height+30);

于 2012-10-23T06:37:56.887 回答
1

尝试添加这个:

[_scrollView setClipsToBounds:YES];
于 2012-11-29T14:39:21.113 回答
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";

在此设置滚动内容大小之后。希望它对你有用。它对我有用。

于 2012-10-23T07:17:09.123 回答
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;
于 2012-10-26T10:12:23.447 回答