如何设置像Notes App一样的UITextView内容

时间:2012-06-07 12:05:45

标签: iphone ios uitextview

我在一个应用程序中工作,我需要在iphone中提供像Notes App这样的功能。如第一个屏幕截图所示,最初,笔记在内容开始之前留下一个标签,我也想做同样的事情,当我将左内容插入(UITextView)设置为25时,它显示如截屏2,在这里你可能会看到图像也被移动了。我已将图像设置为背景。我不知道如何解决这个问题。

我还尝试将图像添加为UITextview的子视图,但它不会重复这些线条,同时滚动(线条图像),例如笔记应用。

Notes App output I get

我正在通过以下代码设置Textview的背景。

[textView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"line_image.png"]]];

如果我出错或需要额外的努力来获得所需的输出,请告诉我。

由于

2 个答案:

答案 0 :(得分:3)

UITextView是UIScrollView子类,因此您可以使用所有相关的委托方法(例如scrollViewDidScroll:) - 您可以在该方法中调整自定义背景。

Dr.Touch blog关于重新创建Notes应用程序界面的帖子非常好 - 你可以大致了解它是如何完成的。基本上所做的是添加自定义视图,在文本视图后面绘制背景并在文本视图的委托方法中调整它,并在其“contentSize”属性上使用KVO。

答案 1 :(得分:2)

@Dinesh提供了很好的解决方案,但是听起来不是通用的,因为我想使用线条的图像而不是绘制它们。图像具有一些通过绘图无法实现的特殊效果。因此,为了解决这个问题,我在textview下创建了一个表视图,保持textview的背景透明。现在只需将行的图像添加到我的tableview的自定义单元格中,并设置UItableview的内容偏移量,与scrollview相同(文本视图的子视图,参考@Vladimir的答案)。

使用以下代码滚动我的tableview,滚动textview并获得所需的输出。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{           
    tableView.contentOffset =scrollView.contentOffset; 
}

保持我的tableview的行数非常大。

PS:我不是设置textview的内容插入,而是设置其框架的 X位置并相应地减小宽度。