2009-04-17 29 views

答えて

71

背景画像とUITextViewを兄弟として持つことができます。その後、Interface Builderでテキストビューを移動して画像ビューをオーバーラップさせることができます(またはプログラムでは両方を同じ親ビューに追加します)。また、テキストビューがの不透明なではないことを確認し、の0%不透明度の背景を与える必要があります。

+10

これが正しい答えである背景画像は「下の境界線」を持っている場合、oxigenの方法では、ユーザーは、彼らがテキストを入力すると、それはテキストビューと一緒にスクロール表示されます。 – bpapa

+0

+1すてきなトリック。+ 1 - @bpapaに同意します。 –

+2

UIImageViewにどのくらい正確に兄弟を追加しますか? – jacobronniegeorge

1

わからない、しかし、あなたはあなたの背景画像がUIImageViewによって処理されると仮定して、次のことを試すことができます。

[myTextView addSubview:myImageView];

UITextViewのアルファ/不透明プロパティの値を変更する必要がある場合があることに注意してください。

親切にしてください。

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

私はduncanwilcoxの答えは、この答えに記載されている方法は、 "バックグラウンドイメージ"は、ユーザーが入力するようにコンテンツと一緒にスクロールする原因となるので、好ましいと思います。 – bpapa

+1

割り当てられたオブジェクトを解放することを忘れないでください。 後: [textView addSubview:imgView]; 追加: [imgViewリリース]; 最後に追加: [textView release]; – ma11hew28

+0

また、より良い画像品質を望む場合は、画像をサイズ変更可能にしてください! – Mateus

11

ちょうど1明確化は、@oxigenから回答#9をしようとしたとき、私はこの行ことが判明:

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

textView.frameに相対的です。

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

以下のように入力しないでください: '(...)initWithFrame:textView.bounds' –

41

@durai:あなたのイメージ白い背景が表示されますされた後、高さの制限がありますが、それはあなたのような何かがしたいことを意味する完全に重なるようにしたいのであれば、あなたのxy値は0,0である必要が下にスクロールした後に空の背景が表示された場合、同じイメージを繰り返すことができます。

これは役に立つかもしれません:タイル張りの背景については

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

upvoting - なぜ誰かがこれをdownvoteしているのかわかりません。それは素晴らしいソリューションです。 – TomSwift

+0

これは一つです! –

+0

この回答と@duncanwilcoxによる回答の両方が良好です。背景をスクロールするかどうかによって異なります。 – memmons

2

私はどのように背景画像を設定する1つの簡単な方法を発見したこのソリューション

UIImage *patternImage = [UIImage imageNamed:@"image.png"]; 
UIColor* color = [UIColor colorWithPatternImage:patternImage]; 
textView.backgroundColor = color; 
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]; 
6

が好きです。

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)]; 
} 
... 
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のドキュメントを参照してください。私の心の中で

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