UITextView背景图片

时间:2009-04-17 09:03:43

标签: iphone cocoa-touch uitextview

如何将背景图像设置为UITextView

10 个答案:

答案 0 :(得分:72)

您可以将UIImageView包含背景图像并将UITextView作为兄弟姐妹,然后在Interface Builder中移动文本视图以重叠图像视图(或者将它们添加到同一父视图中以编程方式执行此操作)。您还需要确保文本视图不是不透明并为其提供 0%不透明度背景

答案 1 :(得分:45)

UITextView *textView = [[UITextView alloc]initWithFrame: window.frame];
textView.text = @"text\n text\n text";
UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
imgView.image = [UIImage imageNamed: @"myImage.jpg"];
[textView addSubview: imgView];
[textView sendSubviewToBack: imgView];
[window addSubview: textView];

答案 2 :(得分:41)

@durai:您的图片有一个高度限制,如果在向下滚动后出现空背景,则会出现白色背景,然后您可以重复相同的图像。

这可能会有所帮助:

textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"Image.png"]];

答案 3 :(得分:11)

只有一点澄清,当从 @oxigen 中尝试回答#9时,我发现这一行:

UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];

相对于textView.frame。因此,如果您希望它完全重叠,那么您的xy值必须为0,0,这意味着您需要以下内容:

UIImageView *imgView = [[UIImageView alloc]initWithFrame:textView.bounds];

答案 4 :(得分:6)

我找到了一种简单的方法来设置背景图像。

h file

@interface FNTextView : UITextView

@end

m file

...
- (void)drawRect:(CGRect)rect
{
    [self.bgImage drawInRect:rect];

    [super drawRect:rect];
}

- (void)initHandler
{
    self.bgImage = [[UIImage imageNamed:@"textview_bg"] resizableImageWithCapInsets:UIEdgeInsetsMake(4, 4, 4, 4)];
}
...

答案 5 :(得分:5)

[txtView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];

答案 6 :(得分:2)

对于平铺背景我喜欢这个解决方案

UIImage *patternImage = [UIImage imageNamed:@"image.png"];
UIColor* color = [UIColor colorWithPatternImage:patternImage];
textView.backgroundColor = color;

答案 7 :(得分:1)

不确定,但您可以尝试以下方法,假设您的背景图像由UIImageView处理:

[myTextView addSubview:myImageView];

请注意,您可能需要更改UITextView的alpha / opaque属性值。

亲切的问候。

答案 8 :(得分:1)

UITextView *textView=[[UITextView alloc]initWithFrame: CGRectMake(20, 20, 40, 40)];
textView.text = @"this is a test \n this is test \n this is a test";
UIImageView *img = [[UIImageView alloc]initWithFrame: textView.frame];
img.image = [UIImage imageNamed: @"image.png"];
[self.view addSubview:textView];
[self.view insertSubview:img belowSubview:textView];

答案 9 :(得分:1)

@dulcanwilcox和@oxigen的答案都有效,但是,如果图像用于显示某种边框,则可以增加背景图像的大小。

UITextView *textView = [[UITextView alloc]initWithFrame: window.frame];
textView.text = @"Some text...";

UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
imgView.image = [[UIImage imageNamed: @"image"] resizableImageWithCapInsets:UIEdgeInsetsMake(8, 8, 8, 8)];

[textView addSubview:imgView];
[textView sendSubviewToBack:imgView];

[window addSubview:textView];

查看resizableImageWithCapInsets:(UIEdgeInsets)capInsets的文档。