Frage

Wie kann ich ein Hintergrundbild einrichten UITextView?

War es hilfreich?

Lösung

Sie können eine UIImageView haben das Hintergrundbild und die UITextView als Geschwister enthält, dann im Interface Builder die Textansicht bewegen, um die Bildansicht zu überlappen (oder sie beide auf die gleiche übergeordnete Ansicht hinzufügen, wenn es programmatisch tun). Sie müssen auch sicher, dass die Textansicht ist nicht undurchsichtig machen und geben ihm einen 0% Opazität Hintergrund .

Andere Tipps

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: Ihr Bild hat eine Höhenbegrenzung nach der weißen Hintergrund erscheinen wird, wenn leerer Hintergrund angezeigt wird, nachdem es nach unten scrollt, dann können Sie das gleiche Bild wiederholen

.

Dies könnte hilfreich sein:

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

Nur eine Klarstellung, wenn sie versuchen, aus Antwort # 9 von @oxigen , ich fand heraus, dass diese Zeile:

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

Ist zum textView.frame relativ. So Ihre x und y Werte müssen 0,0 sein, wenn Sie es wollen, vollständig zu überlappen, das heißt, Sie wollen so etwas wie:

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

fand ich eine einfache Methode, wie Hintergrundbild zu setzen.

h-Datei

@interface FNTextView : UITextView

@end

m-Datei

...
- (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"]]];

Für gekachelten Hintergrund i Diese Lösung mag

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

Nicht sicher, aber Sie können die folgende versuchen, unter der Annahme, dass Ihr Hintergrundbild von einem UIImageView behandelt wird:

[myTextView addSubview: myImageView];

Beachten Sie, dass Sie den Wert der alpha / undurchsichtigen Eigenschaften Ihres UITextView müssen geändert werden.

Mit freundlichen Grüßen.

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];

Die Antworten von @dulcanwilcox und @oxigen beide arbeitet, aber ein Zusatz wäre das Hintergrundbild der Größe veränderbar zu machen, falls das Bild verwendet wird, um eine Art von Grenze zu zeigen.

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];

Überprüfen Sie die Dokumentation aus für resizableImageWithCapInsets: (UIEdgeInsets) capInsets .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top