Как установить фоновое изображение на UITextView
?
Фоновое изображение UITextView
Ответы (8)
У вас может быть UIImageView
, содержащий фоновое изображение, и UITextView
в качестве братьев и сестер, затем в Interface Builder переместите текстовое представление, чтобы оно перекрывало представление изображения (или добавьте их оба в одно и то же родительское представление, если делаете это программно). Вам также необходимо убедиться, что текстовое представление не является непрозрачным, и задать для него непрозрачность фона 0%.
@durai: Ваше изображение имеет ограничение по высоте, после которого появится белый фон, если после прокрутки вниз появится пустой фон, вы можете повторить то же изображение.
Это может быть полезно:
textView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed: @"Image.png"]];
Только одно уточнение: при проверке ответа №9 от @oxigen я обнаружил, что эта строка:
UIImageView *imgView = [[UIImageView alloc]initWithFrame: textView.frame];
Относительно textView.frame
. Таким образом, ваши значения x
и y
должны быть равны 0,0, если вы хотите, чтобы они полностью перекрывались, что означает, что вы хотите что-то вроде:
UIImageView *imgView = [[UIImageView alloc]initWithFrame:textView.bounds];
Я нашел один простой способ установить фоновое изображение.
ч файл
@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)];
}
...
Для плиточного фона мне нравится это решение
UIImage *patternImage = [UIImage imageNamed:@"image.png"];
UIColor* color = [UIColor colorWithPatternImage:patternImage];
textView.backgroundColor = color;
Не уверен, но вы можете попробовать следующее, предполагая, что ваше фоновое изображение обрабатывается UIImageView:
[myTextView addSubview: myImageView];
Обратите внимание, что вам может потребоваться изменить значение альфа/непрозрачных свойств вашего UITextView.
С уважением.
Ответы @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.