Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 填充uilabel、自定义uilabel的渐变时,文本将消失_Ios_Objective C_Core Graphics_Uilabel - Fatal编程技术网

Ios 填充uilabel、自定义uilabel的渐变时,文本将消失

Ios 填充uilabel、自定义uilabel的渐变时,文本将消失,ios,objective-c,core-graphics,uilabel,Ios,Objective C,Core Graphics,Uilabel,我的目标是通过执行以下操作为uilabel添加渐变(CustomLabelBackGround是uilabel的子类) 但是,当我试图在屏幕上显示时,CustomLabelBackGround的文本正在消失。请参考下图: 我在这里错过了什么。如果您对此有任何想法,请提供帮助。谢谢因为您正在为UILabel实现drawRect,您拥有该图形上下文,因此您基本上是在“覆盖”文本,您也可以自己绘制该文本,或者更简单的方法是使用渐变的容器视图和带有文本的透明标签。因为您正在为UILabel实现draw

我的目标是通过执行以下操作为uilabel添加渐变(CustomLabelBackGround是uilabel的子类)

但是,当我试图在屏幕上显示时,CustomLabelBackGround的文本正在消失。请参考下图:


我在这里错过了什么。如果您对此有任何想法,请提供帮助。谢谢

因为您正在为
UILabel
实现
drawRect
,您拥有该图形上下文,因此您基本上是在“覆盖”文本,您也可以自己绘制该文本,或者更简单的方法是使用渐变的容器视图和带有文本的透明标签。

因为您正在为
UILabel
实现
drawRect
,您拥有该图形上下文,因此您基本上是“覆盖”文本,您也可以自己绘制该文本,或者更简单的方法是使用渐变的容器视图和带有文本的透明标签。

最佳方法

  • 创建自定义UIView
  • 在那里实现这个drawrect
  • 在此UILabel类中,将该类添加为标签的背景
否则,您还必须绘制标签内容,因为您正在重写其
drawrect
方法

这是最好的方法

  • 创建自定义UIView
  • 在那里实现这个drawrect
  • 在此UILabel类中,将该类添加为标签的背景

否则,您也必须绘制标签内容,因为您要覆盖其
drawrect
方法

为什么不在photoshop中预渲染渐变,然后在标签上设置:

myLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage"]];

为什么不在photoshop中预先渲染渐变,然后在标签上设置:

myLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myImage"]];
我想:

  • 创建自定义UIView,并在其中使用drawRect代码
  • 确保UILabel背景设置为[UIColor] clearColor]
  • 将自定义UILabel类添加为 自定义UIView类的子视图 或者像Imram说的那样,在Photoshop或其他图形编辑器程序中创建渐变图像,并在那里设置标签背景。就个人而言,我认为这可能是最简单、最易维护的解决方案。

    我会:

  • 创建自定义UIView,并在其中使用drawRect代码
  • 确保UILabel背景设置为[UIColor] clearColor]
  • 将自定义UILabel类添加为 自定义UIView类的子视图 或者像Imram说的那样,在Photoshop或其他图形编辑器程序中创建渐变图像,并在那里设置标签背景。就个人而言,我认为这可能是最简单、最易维护的解决方案。

    您需要调用:

    [super drawRect:rect];
    
    以便在绘制其他内容之前超级绘制文本。然后,将以正常方式绘制文本

    ,您需要调用:

    [super drawRect:rect];
    

    以便在绘制其他内容之前超级绘制文本。在标签上实现DrawRect时,将正常绘制带有的文本

    ,您还必须绘制文本。尝试将渐变应用于UIView,并将标签置于其上或同时绘制文本。在标签上实现DrawRect时,还必须绘制文本。尝试将渐变应用于UIView并将标签置于其上,或者也可以绘制文本。或者只将常规视图连接到视图控制器并设置“插入渐变”,或者只将常规视图连接到视图控制器并设置“插入渐变”