问题标签 [drawrect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
6354 浏览

iphone - 如果您的 UIView 只是一个容器,是否需要覆盖 drawrect?

根据 Apple 的文档,“如果子类是其他视图的容器,则子类不需要覆盖 -[UIView drawRect:]。”

我有一个自定义 UIView 子类,它实际上只是其他视图的容器。然而,包含的视图并没有被绘制出来。这是设置自定义 UIView 子类的相关代码:

当我运行显示此自定义 UIView 的代码时,没有显示任何内容。但是当我添加一个 drawRect 方法时......

...子视图显示。(显然,这不是这样做的正确方法,不仅因为它与文档所说的相反,而且因为它总是显示两个子视图,完全忽略了我的 UIView 中设置隐藏属性的其他代码视图之一,它忽略 z 排序等)

无论如何,主要问题是:当我不覆盖 drawRect: 时,为什么我的子视图不显示?

谢谢!

更新:

为了确保问题不在我的自定义子视图中,我还添加了 UILabel。所以代码如下:

“X”也不显示。

更新 2:

这是调用我的自定义 UIView (OffOnLightView) 的代码:

0 投票
1 回答
3676 浏览

objective-c - 无法在 UIView::drawRect 中绘制 UImage

我知道这似乎是一项简单的任务,这就是为什么我不明白为什么我无法渲染图像。

当我设置我的 UIView 时,我执行以下操作:

我在 UIView 的 init 函数中创建并保留 UIImage:

然后我的 drawRect 看起来像这样:

最终我将通过位图上下文操作 UIImage,然后在 drawRect 中创建一个 CGImage 上下文,并渲染它,但现在我只是想让它渲染一个已知的图像。

我一直在挖掘这个网站,以及文档。我已经沿着 CG 路径走下去,并尝试按照其他人发布的大量示例使用 CGContextDrawImage 绘制它,但这也不起作用。

所以我回到了似乎是最直接的绘制图像的方法,但它不起作用。

任何帮助将不胜感激。

提前致谢。

0 投票
1 回答
38911 浏览

iphone - 如何在drawRect中用渐变填充路径:?

用纯色填充路径很容易:

我想画一个渐变而不是纯红色,但我遇到了麻烦。我已经尝试了问题/答案中列出的代码:UIView 上的渐变和 iPhone 上的 UILabels

这是:

然而,这描绘了它与渐变的整个视图,覆盖了我原来的路径。

0 投票
3 回答
2681 浏览

iphone - drawRect: 使用 CATiledlayer 时是否在多个线程上调用?

我知道这一点,drawLayer:并且drawlayer:inContext:在使用 a 时会在多个线程上被调用CATiledlayer,但是呢drawRect:

Apple 的 PhotoScroller 示例代码用于drawRect:从磁盘获取其图像,并且它没有用于处理线程的特殊代码。

我正在尝试确定我的 a 模型是否CATiledLayer必须是线程安全的。

0 投票
2 回答
5394 浏览

iphone - ViewController 和 drawRect

我有一个 UIViewController 并且我希望它调用 drawRect 以便我可以在视图上绘制但没有任何反应。

和实施

但是当应用程序运行时,视图上没有绘制任何小马,我做错了什么?

0 投票
2 回答
1358 浏览

iphone - DrawRect 和 NSTimer 的性能问题

我正在尝试制作卷轴旋转的老虎机动画。为此,我使用 drawRect 在继承自 UIView 的自定义类中绘制图像。我正在使用 nstimer 来更新图像的位置并调用 [self setNeedsDisplay] 来更新绘图。在模拟器中,它看起来非常好,但是,在设备上,它非常滞后。我想知道我的绘画方法是否有问题,或者有没有更好的解决方案。

我对 UIScrollView 的 CoreAnimation 尝试:

0 投票
1 回答
568 浏览

iphone - UIScrollView 滚动不正确

我有一个 UIViewController 子类,它的 view 属性设置为 UIScrollView 子类(比如 ProfileScrollView)。现在,我重写了 drawRect: 方法,在该方法中我绘制了大量文本并将 UIButtons 作为子视图放置在文本之间。根据文本数据,我在这个 drawRect: 方法中设置了 scrollView 的 contentSize。现在,当我滚动此视图时,按钮正在滚动,但文本仍然停滞不前。请帮助解决这个问题。谢谢

0 投票
0 回答
1008 浏览

iphone - How to properly transform a UIView with a custom drawRect method

I've written a UIView subclass which adds a nice soft shadow underneath a png image. I'm overriding the drawRect method to draw the image and add the shadow.

Now, when I try to do a scale/rotate-affine transform on the UIView (by calling the .transform method), I'm not getting the result I'm looking for due to the initial "flattening" of the drawRect method.

I'd like to "redraw" the shadow so that it stays at the same offset when scaling. I tried to override the transform method and redraw the image but without success.

I was wondering if I'm currently looking in the correct direction.

  • Should I actually redraw the image and create complicated CG transforms and add the shadow every time again?
  • Is this a performant way of redrawing things?
  • The transform method seems to resize the whole container, mixing up the anti-aliassing of the whole image, resulting in jagged edges. Any thoughts on that?
0 投票
1 回答
283 浏览

iphone - 为什么 drawAtPoint 在我的表格单元的内容视图中创建重复图像?

我有一个自定义滑块的视图。我们正在使用生成 UITableViewCell 实例的 TableViewController 的子类。在每个 tableViewCell 中,我们将自定义滑块(UI 视图)添加为子视图。在这里,我们有一个用作滑块控制旋钮的视图。它只是带有手势识别器的 UIView 的子类。控制旋钮类的 drawRect 方法采用 UIImage 并执行 drawAtPoint。这很好用!总结一下,我们有:

UITableView -> UITableViewCell -> UITableViewCell.contentView -> SliderView -> SliderKnob -> UIImage

当我们将表格单元格滚动出表格视图时,就会出现问题。旋钮的 UIImage 仍然存在。每次单元格出列时,我们最终都会得到剩余图像的副本。我已经设置了一些 NSLog 语句并确认在每个子视图中都调用了 drawRect。为了刷新单元格的渲染,我需要做些什么吗?我曾尝试在 UITableViewCell 的子视图上使用 setNeedsDisplay,但未能成功防止 UIImage 被复制。

0 投票
1 回答
3517 浏览

iphone - UIScrollView 在滚动时重绘内容?

我知道有一个属性或方法使滚动视图/uiview 在滚动时调用 drawRect: 方法。由于性能原因,默认情况下是禁用的,但我需要启用它。我不记得方法的名称,因此我无法寻找它,任何知道我在寻找什么的人?

提前致谢