如何创建带有红色角的 UILabel?

Posted

技术标签:

【中文标题】如何创建带有红色角的 UILabel?【英文标题】:How to create an UILabel with a red corner? 【发布时间】:2013-03-01 14:35:03 【问题描述】:

我的目标是创建一个左上角为红色的UILabel(一个边长为 10-15 点的可见三角形)。我该怎么做?

我尝试继承 UILabel 并覆盖 drawRect 但我没有成功。如果我不覆盖drawRect,我不仅没有得到任何红角我还丢失了label.text

-(void) drawRect: (CGRect) rect


CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx,0,0);
CGContextMoveToPoint(ctx,10,0);
CGContextMoveToPoint(ctx,0,10);
CGContextClosePath(ctx);
CGContextSetRGBFillColor(ctx,50,0,0,1);
CGContextFillPath(ctx);


谢谢!

尼古拉

附:我想添加我想要创建的标签的图像,但我需要至少 10 点的声誉才能添加它:(

【问题讨论】:

你有没有试过在这里寻求帮助:cocoacontrols.com 谢谢我不知道这个网站! 【参考方案1】:

与往常一样,阅读您正在使用的函数的文档就足够了。你做了假设,结果证明是错误的(不足为奇)。

CGContextMoveToPoint() 函数开始一个新的子路径不画线。如果你想画一条线,那么……好吧……使用画一条线的函数:

CGPoint points[] = 
    CGPointMake(0, 0),
    CGPointMake(10, 0),
    CGPointMake(0, 10),
    CGPointMake(0, 0)
;
CGContextAddLines(ctx, points, sizeof(points) / sizeof(points[0]));

【讨论】:

我以为绘图是由 CGContextFillPath(ctx) 处理的。 @NicolaP。不要“思考”,阅读。不过,CGContextFillPath(ctx); 仍然需要。 您的代码完全符合我的要求,谢谢。唯一的问题是它正确绘制了左上角的三角形,但标签不再显示其文本。有什么提示吗?

以上是关于如何创建带有红色角的 UILabel?的主要内容,如果未能解决你的问题,请参考以下文章

仅更改默认 UILabel 的 UIAppearance

为啥带有 UILabel 的嵌套 UIStackViews 需要 Y 位置和高度约束?

基于多行 UILabel 自动调整 UIView 的大小

UILabel vs UITextView 和属性字符串 url 链接

IOS UILabe及UIFont用法总结

UILabel 使用 AutoLayout 实现具有居中放置和右侧按钮的 autoheight