【发布时间】:2009-04-17 09:03:42
【问题描述】:
如何为UITextView设置背景图片?
【问题讨论】:
标签: iphone cocoa-touch uitextview
如何为UITextView设置背景图片?
【问题讨论】:
标签: iphone cocoa-touch uitextview
您可以拥有一个包含背景图像的 UIImageView 和 UITextView 作为兄弟姐妹,然后在 Interface Builder 中移动文本视图以与图像视图重叠(或者如果以编程方式将它们都添加到同一个父视图中) .您还需要确保文本视图不是不透明,并为其设置0% 不透明度背景。
【讨论】:
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];
【讨论】:
@durai:您的图片有高度限制,如果向下滚动后出现空白背景,则会出现白色背景,然后您可以重复相同的图片。
这可能会有所帮助:
textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"Image.png"]];
【讨论】:
只是一个澄清,当尝试来自 @oxigen 的答案 #9 时,我发现这一行:
UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
相对于textView.frame。因此,如果您希望 x 和 y 完全重叠,则您的值必须为 0,0,这意味着您需要类似:
UIImageView *imgView = [[UIImageView alloc]initWithFrame:textView.bounds];
【讨论】:
我找到了一种设置背景图片的简单方法。
h 文件
@interface FNTextView : UITextView
@end
m 文件
...
- (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)];
}
...
【讨论】:
[txtView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];
【讨论】:
对于平铺背景,我喜欢这个解决方案
UIImage *patternImage = [UIImage imageNamed:@"image.png"];
UIColor* color = [UIColor colorWithPatternImage:patternImage];
textView.backgroundColor = color;
【讨论】:
不确定,但您可以尝试以下方法,假设您的背景图片由 UIImageView 处理:
[myTextView addSubview:myImageView];
请注意,您可能需要更改 UITextView 的 alpha/opaque 属性的值。
亲切的问候。
【讨论】:
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];
【讨论】:
@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];
【讨论】: