drawRect中的UILabel不绘制

Posted

技术标签:

【中文标题】drawRect中的UILabel不绘制【英文标题】:UILabel in drawRect does not draw 【发布时间】:2011-01-21 02:45:09 【问题描述】:

快速提问,我在UIView 中得到了这个drawRect 方法,带有UILabel 和圆圈。圆圈绘制正确,但UILabel 不正确。

有什么想法吗?

感谢您的帮助。

    - (void)drawRect:(CGRect)theRect

    CGRect rect = self.bounds;


    //text label
    UILabel * pText = [[UILabel alloc] initWithFrame: rect];
    pText.text = @"demo";

    // Circle
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:rect];
    rect = CGRectInset(rect, 5, 5);
    [path appendPath:[UIBezierPath bezierPathWithOvalInRect:rect]];
    path.usesEvenOddFillRule = YES;
    [self.color set];
    [path fill];



【问题讨论】:

【参考方案1】:

你需要将你的 UILabel 添加到你的视图中。

//text label
UILabel * pText = [[UILabel alloc] initWithFrame: rect];
pText.text = @"demo";
[self addSubview:pText];
[pText release];

【讨论】:

这个,但是不要在drawRect做这个,而是在一个做一次的地方。 drawRect 可能会被多次调用。 谢谢你们这么快!我是否需要添加 UILabel 因为它是一个视图对象而不是 rect 因为 UIBezierPath 包含绘制指令?【参考方案2】:

你需要打电话:

[super drawRect:rect];

为了在画圆之前画出你的uilabel。

【讨论】:

以上是关于drawRect中的UILabel不绘制的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 自定义CG绘制iOS 7

Swift drawRect 函数不会更新绘图

手动调用 Drawrect

跨多个 UIView 子类的单个 drawRect 实现

IOS 6 - 自定义 UIButton 如何给我的 titleLabel 留出余量?

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