如何拉伸图像以填充UILabel中背景中设置的标签宽度?

时间:2011-12-26 08:26:36

标签: iphone objective-c ios uiimage uilabel

我有简单的基于View的应用程序。我只采用了UILabel

以下是我在viewDidLoad中的代码:

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次。但我希望拉伸图像以填充标签宽度。

我已经提到了一些以前的链接,这些链接显示我在后台添加了图片,并使用clearColor作为UILabel。还可以看到在后台添加自定义视图的示例。但除非我没有其他解决方案,否则我不想使用这一切......

我只想在UILabel上执行所有操作....除了我想使用的UIImageUIImageView之外没有其他控件..

2 个答案:

答案 0 :(得分:20)

Dhiren试试这段代码:

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

我已经测试了这段代码。

答案 1 :(得分:1)

移植Maulik对Swift 2.2的回答,您将获得以下代码:

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)

亲自测试工作!