UITextView фоновое изображение - PullRequest
37 голосов
/ 17 апреля 2009

Как мне установить фоновое изображение на UITextView?

Ответы [ 10 ]

72 голосов
/ 17 апреля 2009

У вас может быть UIImageView, содержащее фоновое изображение, и UITextView в качестве братьев и сестер, затем в Интерфейсном Разработчике переместите текстовое представление, чтобы перекрыть представление изображения (или добавьте их обоих в один и тот же родительский вид, если это делается программно) , Вы также должны убедиться, что текстовое представление не является непрозрачным и дать ему 0% непрозрачный фон .

45 голосов
/ 17 апреля 2009
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];
41 голосов
/ 20 января 2011

@ durai: Ваше изображение имеет ограничение по высоте, после которого появляется белый фон, если после прокрутки внизу появляется пустой фон, вы можете повторить то же изображение.

Это может быть полезно:

textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"Image.png"]];
11 голосов
/ 11 ноября 2010

Только одно уточнение, при попытке ответить на вопрос № 9 из @ oxigen , я обнаружил, что эта строка:

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

Относительно textView.frame. Таким образом, ваши значения x и y должны быть 0,0, если вы хотите, чтобы они полностью перекрывались, что означает, что вы хотите что-то вроде:

UIImageView *imgView = [[UIImageView alloc]initWithFrame:textView.bounds];
6 голосов
/ 14 декабря 2012

Я нашел один простой способ, как установить фоновое изображение.

ч файл

@interface FNTextView : UITextView

@end

м файл

...
- (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 голосов
/ 18 сентября 2013
[txtView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"image.png"]]];
2 голосов
/ 12 марта 2012

Для плиточного фона мне нравится это решение

UIImage *patternImage = [UIImage imageNamed:@"image.png"];
UIColor* color = [UIColor colorWithPatternImage:patternImage];
textView.backgroundColor = color;
1 голос
/ 20 марта 2013

Ответы @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 .

1 голос
/ 05 декабря 2012
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];
1 голос
/ 17 апреля 2009

Не уверен насчет, но вы можете попробовать следующее, предполагая, что ваше фоновое изображение обрабатывается UIImageView:

[myTextView addSubview: myImageView];

Обратите внимание, что вам может потребоваться изменить значение альфа / непрозрачных свойств вашего UITextView.

С уважением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...