将背景图像添加到UILabel

Joy*_*Joy 52 ios

如何在iPhone应用程序中将背景图像添加到UILabel.我试过通过IB做但没有结果.

Eva*_* Wu 148

尝试使用代码:

Objective-C的:

theLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"blah"]];
Run Code Online (Sandbox Code Playgroud)

迅速:

theLabel.backgroundColor = UIColor(patternImage: UIImage(named: "blah")!)
Run Code Online (Sandbox Code Playgroud)

或者UIImageView在标签后面放置(不推荐).


更新:不推荐在标签后面放置UIImageView,因为那时你必须管理两个视图.但是如果你必须做一些只有UIImageView可以做到的事情,这仍然是一个很好的方法.我怀疑你的应用程序实际上会以这种方式运行得更好.

  • 要使用透明PNG,必须将UILabel Opaque属性设置为NO:`[theLabel setOpaque:NO];` (12认同)
  • 测试它,它不支持PNG透明度.可能会有一些技巧吗?我确实尝试将backgroundColor设置为clearColor,然后再将其设置为图像,仅用于运动.但当然没有效果. (4认同)
  • 我可以知道为什么不建议在标签控件后面使用UIImageView吗?提前致谢. (4认同)
  • 优秀实用的功能,1up!:)但我想知道Apple在将图像实现为backgroundColor时的想法.这完全是违反直觉的!即使CSS也具有bg彩色图像的独立属性.也许这是过去Apple UI的一些遗产? (2认同)

Lê *_*inh 18

如果你想要拉伸图像以填充标签宽度.试试这段代码.

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];
Run Code Online (Sandbox Code Playgroud)