1

我记得我在看苹果文档的时候,会提到当你调用一个函数比如 的时候addSubview,你是在添加一个“油漆层”,可以这么说,每次调用都会覆盖另一个层。

这应该是一个容易回答的问题,但是我很难想到要在 Google 上搜索的关键字,所以请原谅提出这样一个简单的问题。

如何清除自定义的“层” UIView

我的情况,可能是相关的:我有这些显示在屏幕上的“用户卡”。它们使用一些用户图像进行初始化。卡片保持不变,但是当我想显示不同的用户时,我会在我的自定义UIView(卡片)中调用一个方法来重绘图像。UIView问题是这个自定义 UIView 的某些元素是透明的,并且每次重绘这些图像都建立在该透明度之上(一个明显的问题)。

4

2 回答 2

2

在 Core Graphics 中,您所画的就是所显示的。画家的比喻只指单帧。因此,如果您正在使用drawRect,您只是不缓存以前的绘图。

但我怀疑你在谈论一些你添加了子视图或子层的 UIKit 东西。如果您只想清除所有内容,这将删除那些剩余的视图:

for (UIView *view in customView) {
    [view removeFromSuperview];
}

for (CALayer *layer in customView.layer) {
    [layer removeFromSuperlayer];
}
于 2013-01-14T21:00:50.940 回答
0

Ryan 用于清除 UIViews 的代码或多或少是正确的,但如果您从 Google 来到这里寻找如何从视图中清除 CLLayers,当我尝试customView.layer像 Ryan 在他的示例中那样快速枚举时,我遇到了崩溃。

当我将其切换为常规枚举时,它对我有用。这是一个代码片段:

for (int i = 0; i > yourView.layer.sublayers.count; i++) {
    CALayer *layer = [self.yourView.layer.sublayers objectAtIndex:i];
    [layer removeFromSuperlayer];
}
于 2016-01-27T19:33:28.837 回答