在 drawRect 上添加覆盖图像

Posted

技术标签:

【中文标题】在 drawRect 上添加覆盖图像【英文标题】:Add overlay image on top of drawRect 【发布时间】:2013-05-12 17:05:24 【问题描述】:

我有一个 UIView 子类,我在 drawRect 方法中绘图。

如何在 drawRect 目标层之上添加叠加图像?

我在initWithFrame 方法中添加以下内容:

    //add the image overlay
    UIImageView *overlageImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"downloaderFront.png"]];
    overlageImage.center = self.center;
    [self.layer addSublayer:overlageImage.layer];
    //replacing the above line with below line does not fix either
    [self addSubview:overlageImage];

此图像在 drawRect 绘图的顶部不可见。

【问题讨论】:

【参考方案1】:

层的东西肯定是错的。只需这样做:

UIImageView *overlageImage = 
    [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"downloaderFront.png"]];
[self addSubview:overlageImage];

你可以玩overlageImage的框架,得到你想要的位置。

至于您的实际问题:设置断点。我怀疑您会发现您的代码甚至从未运行(因为您的视图的 initWithFrame 从未被调用)。这只是一个猜测——你没有说这个 UIView 子类实例是如何进入界面的——但这是一个很常见的错误,人们应该总是首先怀疑明显的错误!

【讨论】:

我正在这样做,它不起作用。 drawRect 在视图上呈现。 好的,很好的信息。但是你应该在你原来的问题中这么说。 那么为什么不将覆盖的图像绘制为 drawRect 的 part 呢? 顺便说一句,我认为您在这里遇到困难这一事实表明其他问题存在问题。正确编写的drawRect 不会绘制在子视图之上!但是,您最初的问题没有提供任何信息来推断可能出现的问题。再次怀疑显而易见的事情:也许您正在第一个视图之上添加另一个视图副本。

以上是关于在 drawRect 上添加覆盖图像的主要内容,如果未能解决你的问题,请参考以下文章

当我覆盖“drawRect”时,UIButton 样式设置被忽略

两倍大小的drawRect

在 drawRect 上动画创建 cgrect 不起作用

ios如何在drawrect方法中在图像上画一条线

覆盖绘图应用程序的drawRect

如何在 VC.m 尝试加载之前保存使用 drawRect 绘制的图像?