2011-12-26 23 views
4

私は単純なビューベースのアプリケーションを持っています。私はただそれにUILabelを取っていた。 viewDidLoadで私のコードが続きUILabelの背景に設定されたラベル幅を埋めるためにイメージを伸ばす方法は?

lblBack.textColor = [UIColor blueColor]; 

UIImage *img = [UIImage imageNamed:@"cn3.png"]; 
lblBack.backgroundColor = [UIColor colorWithPatternImage:img]; 
lblBack.text = @"Hello World!!!..."; 

// UIImageView *imgView = [[UIImageView alloc] initWithImage:img]; 
//  
// CGRect rect = CGRectMake(0, 0, lblBack.frame.size.width, lblBack.frame.size.height); 
// [imgView setFrame:rect]; 
// NSLog(@"Rect : %@",NSStringFromCGRect(rect)); 
// [img drawInRect:rect]; 
// imgView.contentMode = UIViewContentModeScaleAspectFill; 
// imgView.contentMode = UIViewContentModeScaleAspectFit; 
// imgView.contentMode = UIViewContentModeScaleToFill; 
// [lblBack addSubview:imgView]; 

コメントは私がしようとしていることのいくつかを示しています。この一枚の画像で

enter image description here

3回繰り返されている:私は次の出力を取得しています。しかし、ラベルの幅を埋めるために画像を引き伸ばす必要があります。

画像をバックグラウンドで追加し、UILabelclearColorを使用することを示す前のリンクの一部を紹介しました。バックグラウンドでのカスタムビューの追加の例も見てください。しかし、私はいけないこのすべては、私はちょうどUILabel上のすべてのものを実行したい...私は他のソリューションを持っていけない場合を除き使用する

をしたいだけ.... UIImageか、私が使用したいUIImageView以外は、他のコントロール..

を私はこのコードをテストしている

UIImage *img = [UIImage imageNamed:@"cab.png"]; 
    CGSize imgSize = testLabel.frame.size; 

    UIGraphicsBeginImageContext(imgSize); 
    [img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)]; 
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    testLabel.backgroundColor = [UIColor colorWithPatternImage:newImage]; 

+0

コードがうまくいるようです:lblBack.backgroundColor = [UIColor colorWithPatternImage:img]; //ラベルのフレームを確認しましたか? – samfisher

+0

私はそれをチェックしました...そして幅は320です。 – DShah

+0

@DShah、私の答えはあなたの問題を解決することを願っています..もしそうなら、答えを受け入れてください..そうでなければ、コメントをしてください... – Ilanchezhian

答えて

20

Dhirenは、このコードを試してみてください。スウィフト2.2にMaulikの答えを超える移植

+0

"newImage" UIImageオブジェクトが機能し、 "img"が機能しません。 – samfisher

+0

私は「imgは動作しません」とは言いませんでした!両方とも動作します.. – Maulik

+0

なぜ、同じUIImageポインタを使用せず、単一行で行うことができるときにこのオーバーヘッドを作成するのですか? testLabel.backgroundColor = [UIColor colorWithPatternImage:img]; – samfisher

1

は、次のコードを取得する:個人的に仕事ができることにテスト

var img: UIImage = UIImage(named: "cabImage")! 
var imgSize: CGSize = testLabel.frame.size 

UIGraphicsBeginImageContext(imgSize) 

img.drawInRect(CGRectMake(0, 0, imgSize.width, imgSize.height)) 
var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext() 

UIGraphicsEndImageContext(); 

testLabel.backgroundColor = UIColor(patternImage: newImage) 

関連する問題