Swift:在标签背景下制作图像

我想将标签放入一个带有圆角半径的红色矩形的图像中(条件是图像尺寸必须等于或稍高于标签尺寸)。 为此,我发现了一个类似的问题 。 我测试了这个:

theLabel.backgroundColor = UIColor(patternImage: UIImage(named: "blah")!) 

但我的图像尺寸有问题。 所以我测试了第二个答案:

 UILabel *myLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 20)]; UIImage *img = [UIImage imageNamed:@"a.png"]; CGSize imgSize = myLabel.frame.size; UIGraphicsBeginImageContext( imgSize ); [img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); myLabel.backgroundColor = [UIColor colorWithPatternImage:newImage]; 

拥有最新版本的Xcode(Xcode 8.0), CGRectMake不可用。

有人可以帮我吗?

试试这段代码:在Swift 3中测试。

答案1:

 override func viewDidLoad() { super.viewDidLoad() let label = UILabel() label.frame = CGRect(x:0, y:0, width:imageView.frame.width , height:imageView.frame.height) label.text = "Some Title" label.textAlignment = .center label.textColor = .yellow label.font = UIFont(name: "HelveticaNeue-medium", size: CGFloat(20)) imageView.addSubview(label) } 

输出:

在此处输入图像描述

答案2: 更新

 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. imageView.layer.cornerRadius = 10 imageView.layer.masksToBounds = true let label = UILabel() label.frame = CGRect(x:0, y:0, width:imageView.frame.width , height:imageView.frame.height) label.text = "Some Title" label.textAlignment = .center label.textColor = .yellow label.layer.borderColor = UIColor.red.cgColor label.layer.cornerRadius = 10 label.layer.masksToBounds = true label.layer.borderWidth = 5 label.font = UIFont(name: "HelveticaNeue-medium", size: CGFloat(26)) imageView.addSubview(label) } 

注意:您需要锻炼图像大小和标签字体大小。

输出:

在此处输入图像描述

您的目标c代码已更改为swift 3.0

 var myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21)) var img = UIImage(named:"a") var imgSize : CGSize = myLabel.frame.size UIGraphicsBeginImageContext(CGSize(width: newWidth, height: newHeight)) image.draw(in: CGRect(x: 0, y: 0, width: newWidth, height: newHeight)) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() myLabel.backgroundColor = UIColor(patternImage: newImage)