在iOS7应用中,在单个屏幕中显示大量格式化文本的最佳方法是什么?

时间:2014-04-16 17:06:50

标签: ios uiscrollview uitextview

我正在创建一个应用程序,我想添加一个条款和条件页面,所以我希望在一个屏幕上有一个大的可滚动文本窗口。我看过的两个类是UIScrollView和UITextView。 UIScrollView很容易滚动,但我不知道如何添加我需要的所有格式化文本,而无需手动创建每个标签,格式化它,并将其添加到正确位置的视图。我创建了一个带有属性文本的UITextView(不可编辑,不可选),它给了我所需要的东西,但后来我无法让它滚动到窗口的边界(即我无法滚动到底部即使在我更改了内容大小并将其框架更改为远大于屏幕本身之后,屏幕的边框也是如此。我也尝试了两者的合并,有这样的东西(在文本视图上禁用滚动之后):

_scrollView.scrollEnabled = YES;
_scrollView.contentSize = CGSizeMake(320, 2000);
[_textView removeFromSuperview];
[_scrollView addSubview:_textView];

但是文本视图从未出现在滚动视图中。我确信这是其他人遇到的问题,因为许多应用程序的页面与我所描述的页面类似。我希望有人可以帮助我找到一种方法来实现这一点,而无需使用UIScrollView并为我想要添加的每段文本手动创建标签。

2 个答案:

答案 0 :(得分:2)

UITextView继承自UIScrollView。除非您想在其中添加多个视图,否则您不需要在UITextView内设置UIScrollView

您可以创建一个UITextView,以UIViewController为单位拍摄整个屏幕:

UITextView *myTextView = [[UITextView alloc] initWithFrame:self.view.bounds];
myTextView.text = @"some large text";
myTextView.font = [UIFont fontWithName:@"Arial" size:20];
myTextView.scrollEnabled = YES;
myTextView.editable = NO;
[self.view addSubview:myTextView];

将根据文本的大小自动设置属性contentSize。您还可以使用[myTextView sizeToFit]方法调整UITextView的大小以适合其文本。

答案 1 :(得分:0)

还有第三种方法,即加载带有内部htmlpage /文件的UIWebview。

关于你的UITextview - 设置框架大小以使其适合屏幕/ self.view的范围,如果框架大小大于screen / view.frame,那么你会遇到无法滚动的问题 - 这是因为就textview而言,整个文本已经显示,只显示在视图不可见的框架部分。 UITextview的行为类似于滚动视图,其内容大小会自动设置,因此所有文本都应通过滚动显示。

关于UIScrollviews - 类似于UITextview的讨论,您应该在screen / self.view的范围内设置帧大小。内容大小应足够大,以容纳您的最大对象(框架式)。你想在UIScrollview中放置大于框架UITextview的想法是合理的,应该可行。只需将textview添加为scrollview的子视图即可。