如何拉伸图像以填充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]; 

评论显示了我尝试过的一些事情。 我得到以下输出:

在此处输入图像描述

在这一个图像中重复3次。 但我希望拉伸图像以填充标签宽度。

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

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

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

我已经测试了这段代码。

移植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) 

亲自测试工作!