问题标签 [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 回答
2599 浏览

iphone - 试图添加一个子视图,drawRect 没有被调用

我正在尝试将子视图添加到我的主视图中。这是我的 viewController 中的相关代码:

myView 中的 drawRect 不会被调用。

但是,如果我使用 MyUIViewSubclass 作为 viewController 的主视图(在 Interface Builder 中设置它),drawRect 会被调用。

我需要做什么才能在我的 subView 中调用 drawRect?

0 投票
1 回答
9545 浏览

iphone - 从 drawRect 在 UIView 的边界之外绘制

我的问题与这个Not draw outside bounds when clipToBounds=NO非常相似,它没有收到明确的答案。

基本上我有一个 UIView,我想从它的中心画一条线,到屏幕的边缘。计算这些点的位置很容易,使用[self convertPoint:(CGPoint){0,0} fromView:[self superview]];(它找到相对于我的视图的超级视图的原点。但是当我从我的视图的 drawRect 中画一条线时:它会在我的视图边界处被剪裁。

有没有办法在我的视野范围之外进行绘制?我尝试更改 clipsToBounds 属性,但似乎没有任何效果。

我无法从超级视图中画线,因为我需要使用多个视图来执行此操作,并且有些视图会在其他视图之前......从超级视图的 drawRect 中找出图层似乎是个坏主意。

同样,我认为我不能只调整视图的边界以包括整个屏幕,因为我的视图需要动态调整大小......边界必须是巨大的(> 20,000 平方)才能工作.

0 投票
1 回答
14307 浏览

ios - 在不使用 UILabel 的 drawRect: 方法中向 NSString 文本添加阴影

我想为使用 iOS 提供的NSString (UIStringDrawing)类别方法绘制的文本添加阴影:

显然,没有投影选项。

是的,可以在这里使用 UILabel 并设置阴影属性,但这不会像 UILabel 那样高效,因为任何 UIView 子类(例如 UILabel)都包装了一个 CALayer 对象并且会更重(性能方面)。

这是上下文:

我正在为 UITableViewCell 子类进行自定义绘图,drawRect:在表格单元格视图上实现,而不是从复合 UIView 子类的 Nib 文件创建表格单元格。

组合一堆 UIView 子类会破坏试图保持这种精简并在表格视图滚动性能中保持在每秒 50-60 帧的目的。

我曾尝试以轻微的偏移量两次绘制字符串。一旦我调整了我要去的单元格的背景颜色上的阴影颜色,这可能会变得可以接受,但它看起来相当笨拙。当然,没有像 UILabel 那样的阴影模糊属性。

我搜索了解决方案,他们要么推荐 UILabel 用法(我已经在上面忽略了,因为我有大约十几个不同的文本元素被合成到表格单元格视图中)或CGContextSetShadow(). 后者似乎总是在矩形形状的上下文中被建议,并且不一定用于将阴影附加到使用上述 NSStringdrawAtPoint...方法直接绘制的文本路径上。(我确实尝试过,但它似乎没有用(即没有任何改变);我是 Core Graphics 绘图的新手)。

建议?

0 投票
1 回答
3712 浏览

iphone - 在 UIView 中绘制以及 addSubview

嗨,我想使用 Interface Builder 在 UIView 上添加两个按钮,并在这两个按钮之间画一条线。这怎么可能?请建议。谢谢

0 投票
1 回答
1724 浏览

ios - drawRect:速度和 CGContextDrawRadialGradient(超慢?)

我的UIView子类drawRect:功能有问题。我用CGContextDrawRadialGradient()它,它。当用户拖动我的 UIView 时,如果我包含渐变,它很难跟上。

使用 Time Profiler,我发现我 98% 的时间都花在了我的子类' drawRect: 方法上。

第一:使用渐变的静态图像会更快吗?第二:有什么办法可以加快速度?我可以以某种方式缓存渐变吗?它并没有太大变化,但是当你拖动UIView.

如果有人知道如何使drawRect:方法不占用所有 cpu 周期的一般指南,那就太棒了。

0 投票
2 回答
990 浏览

iphone - 读/未读单元格(使用drawrect)

我的应用程序将帖子从互联网下载到 UITableViewCell。当用户点击单元格时,我需要将这篇文章设置为已读(如在 Mail.app 上)。我不知道该怎么做。我正在将 url(当用户按下单元格时)添加到数据库(如“url|url|url”),打开详细信息视图。当他返回 UITableView 检查数据库中现有的 url 时。现在表太慢了!你能帮我说一下我可以用什么其他方法来做到这一点?就像在 mail.app 中一样。我在 drawRect 方法中使用自定义单元格和代码。请帮忙


好的。我认为,我的代码很糟糕,你可以理解,我在这里做什么)回答其他问题。我如何更新隐藏的单元格?用户一次只能看到 6 个单元格,我需要更新,例如 10 个单元格。如何?或者,如果它已经存在,如何重新加载单元格?可以说——

现在单元格存在,如果我调用重新加载数据,则不会发生任何事情。并且 reloadCellAtIndexPath 也不起作用,因为单元格具有唯一标识符和 ixists。

我如何重新加载单元格并再次调用 DRAWRECT?))

0 投票
2 回答
2736 浏览

cocoa-touch - 在 iPad 上绘制大量线条(CGContextBeginPath)

我正在尝试制作一个吸引很多人的 ipad 应用程序,但我的意思是舞台上有很多台词(10.000+)

使用这个简单的 forloop,我的 ipad 在 40~60 秒后崩溃(不显示结果)

这是我的“DrawLine”类:

我怎么解决这个问题?如何在不使 iOS 崩溃的情况下绘制这么多子视图?

非常感谢!!:)

0 投票
1 回答
1935 浏览

iphone - 为什么我调用 setNeedsDisplay 后我的 UIView 子类不重绘?

我有一个自定义 UIView,它是 UITableViewCell 的子视图。绘制单元格时,我的自定义视图也是如此,在我的 UIView 子类中正确调用 drawRect:。重新加载单元格时,会正确绘制视图(drawRect:被调用)。

当某个事件发生时(例如计时器),我想重绘视图而不必重新加载整个单元格。(这不是单元格中的唯一视图。)

但是,当我调用setNeedsDisplay我的子视图时,什么也没有发生。

我猜当我的视图drawRect:被调用时,生成的图像被缓存在某处的支持中,这样当我调用setNeedsDisplay该支持时,该支持被重新绘制到屏幕上,但我的drawRect:调用再也不会被调用。

为什么drawRect:在创建单元格后不再调用?

编辑:单元格的子视图是从笔尖创建的。即:从 nib 加载 UIViewController,并将其视图添加到 UITableViewCell。

我使用不是从笔尖(由代码创建)加载的自定义视图从头开始制作了一个测试用例,它按预期工作:setNeedsDisplay导致drawRect:调用。它必须是在 .xib 文件中设置的东西,或者是在从 nib 加载视图时发生的与视图不同的东西。

0 投票
1 回答
300 浏览

uiimage - 显示瓷砖图像时哪种方式更好?

我尝试在瓷砖中显示图像,我认为有一些方法如下,但我不确定哪个更好,虽然我可以尝试所有方法,但我仍然希望我能从经验中获得信息。

  1. 使用 UIImageView + AnimatedGif 的图块
  2. 以自定义样式 + AnimatedGif 使用 UIButton 的图块
  3. 使用 UIWebView 的图块(用于 gif89a)
  4. 使用 UIView 并绘制 UIImage 的图块
0 投票
1 回答
298 浏览

cocoa - setNeedsDisplay:True 除非激活,否则不重绘?

我有一个自定义视图,它是主窗口的子视图。我有一个计时器,它会触发一个 [self setNeedsDisplay:TRUE] 来更新视图上的绘图。但据我所知,如果我将应用程序留在后台并切换到另一个应用程序,它不会反映新的绘图功能,直到我再次单击应用程序。我会错过什么?谢谢你,何塞。