使用 Quartz 通过 NSTimer 每秒绘制一次 (iPhone)

2024-01-03

我对 Objective-C + Quartz 比较陌生,遇到的问题可能非常简单。我有一个自定义 UIView 子类,我用它通过 Quartz 绘制简单的矩形。不过,我试图连接一个 NSTimer,以便它每秒绘制一个新对象,下面的代码将绘制第一个矩形,但永远不会再次绘制。该函数正在被调用(NSLog 正在运行),但没有绘制任何内容。

Code:

- (void)drawRect:(CGRect)rect {
    context = UIGraphicsGetCurrentContext();

    [self step:self];
    [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval)(2) target:self selector:@selector(step:) userInfo:nil repeats:TRUE];

}

- (void) step:(id) sender {
    static double trans = 0.5f;

    CGContextSetRGBFillColor(context, 1, 0, 0, trans);
    CGContextAddRect(context, CGRectMake(10, 10, 10, 10));
    CGContextFillPath(context);

    NSLog(@"Trans: %f", trans);

    trans += 0.01;
}

上下文在我的界面文件中为:

CGContextRef context;

任何帮助将不胜感激!


你的例子不会起作用。原因是drawRect:当视图需要绘制并且它无法自行绘制时,会为您调用。

相反,尝试从外部使用计时器drawRect: (viewDidLoad我想到了),每次添加一个要绘制的对象到列表中,然后调用[view setNeedsDisplay]请求重新绘制。如果您需要更严格的控制,还有其他技术,但最好首先掌握应用程序流程的基础知识。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Quartz 通过 NSTimer 每秒绘制一次 (iPhone) 的相关文章

  • 在运行时获取 iPhone 应用程序的产品名称?

    如何才能实现这一目标 我想获取名称 以便可以在应用程序中显示它 当然 每次更改名称时不必在代码中更改它 Try this NSBundle bundle NSBundle mainBundle NSDictionary info bundl
  • 径向渐变绘制性能 - OpenGL-ES 可以改进吗?

    我正在开发一个图像处理应用程序 它将径向渐变叠加在从照片库加载的图像上 在屏幕上 我有一个滑块可以动态地增大 减小径向渐变的半径 我发现模拟器上的性能很好 但在 iPhone 3G 或 3GS 上就很糟糕了much移动滑块时重绘速度较慢 我
  • iphone:在 UIWebView 之上查看?

    我正在开发一个浏览器应用程序 并且 UIWebView 顶部有一个地址栏 在 MobileSafari 上 如果向下滚动 地址栏开始移动到顶部 移出屏幕 并且 UIWebView 不会滚动 只有当地址栏完全消失时 它才开始滚动 我也想在我的
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • 如何在 UICollectionView 的节标题中动态添加标签和按钮?

    请帮助我如何水平添加标签和水平添加类似的按钮 但每个按钮应像另一个部分一样在每个标签的下方对齐 这应该在 UICollectionView 的标题中动态发生 因为标签和按钮的数量根据我的数据 我想制作一种 Excel 类型的布局 并在标题中
  • 防止UIScrollView的UIPanGestureRecognizer遮挡UIScreenEdgePanGestureRecognizer

    我有一个UIScrollView它填满了我应用程序的一页上的屏幕 但我希望允许用户从屏幕边缘平移以显示其后面的视图 问题是 UIScrollView 窃取了我的触摸UIScreenEdgePanGestureRecognizer在屏幕边缘
  • 带有 Core Data 对象的动态 UITableView 高度

    过去几天我一直在试图解决一个谜团 即为什么我的批处理大小为 20 的 NSFetchedResultsController 总是在获取完成后立即错误 即加载到内存中 我的所有对象 从而导致请求需要约 20 秒 事实证明 这是因为在我的 he
  • iPhone 崩溃日志?

    我已经配置了一部 iPhone 并让用户安装了该应用程序 它失败 是否有崩溃日志可以让我看到 iPhone 上失败的原因 Ian 如果您可以使用 xcode 将 iPhone 连接到计算机 则在管理器窗口中它会显示每个应用程序崩溃的崩溃日志
  • GMSMapView 中的倒多边形

    我必须在我的 iPhone 项目中使用 Google 地图 并且我正在使用 GMSPolygon 来绘制多边形 但是如何填充地图上除多边形内部之外的所有位置 就像下图一样 谢谢 我玩过你的问题 主要思想是用多边形填充整个地球 然后为您的特定
  • iOS 10 的错误? NSDate 日本地区时间描述和 24 小时休息

    这似乎是 iOS 10 的一个错误 在 iOS 8 和 9 中都可以 NSDate date description 的小时描述是错误的 它附加了 24 小时描述和 12 小时描述 我没有使用 NSDateFormatter 只是默认设置
  • UIDatePickerModeCountDownTimer模式中的UIDatePicker:如何更改为分钟和秒模式?

    我在故事板中添加了 UIDatePicker 并将模式设置为 CountDownTimer 它只显示小时和分钟 但我需要的是分钟和秒模式 我不需要小时列 需要分钟和秒列 我尝试更改间隔 但最小值是 1 分钟 是否可以 我怎样才能做到这一点
  • 用 UIView 像翻书一样翻页?

    我正在尝试在之间切换UIViews让它看起来就像你正在翻书的一页 The UIViewAnimationTransitionCurlUp如果我能让它向左或向右卷曲 那就非常接近了 这可能吗 我尝试过使用CATRansition但没有一种动画
  • UISplitViewController - 推送模态视图

    使用 UISplitViewController 时推送模态视图的最佳实践是什么 您会从 RootViewController DetailViewController 还是直接从应用程序委托推送 理想情况下 我想要实现的功能是在基于某些条
  • 如何在 iOS 中注册自定义文件类型

    我目前正在创建一个应用程序 我想让用户在其中备份他们的文件 plist m4a 我压缩文件并将扩展名更改为自定义扩展名 专门针对我的应用程序 例如 MyBackup 然后 用户可以通过电子邮件或 iTunes 文件共享进行导出 我已经阅读过
  • 沿着预定路径移动图像?

    是否可以通过按下 iphone SDK 中的按钮来将图像设置为沿着预定路径运动 我不是在寻找任何奇特的东西 我正在研究一个简单的概念 但这会节省大量动画工作 是的 您可以通过创建一个路径来为任何 CALayer 制作动画CAKeyframe
  • 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

    谁能告诉我下面的代码行到底会做什么 我已经提到过Apples https developer apple com library ios documentation uikit reference UIGestureRecognizer C
  • Xcode 3.1.4 中内置分析器

    我想知道 Xcode 3 1 4 中内置的分析器是否使得单独使用 LLVM Clang 静态分析器变得多余 请参考这里的原文 使用 LLVM Clang 静态分析器查找内存泄漏 http www fruitstandsoftware com
  • 自定义 MKAnnotationView - 如何捕获触摸而不忽略标注?

    我有一个自定义 MKAnnotationView 子类 它完全按照我想要的方式显示视图 在那个视图中 我有一个按钮 我想捕获按钮上的事件来执行操作 这很好用 但是 我不希望标注被忽略或消失 基本上 触摸标注中的按钮将开始播放声音 但我想保留
  • 将 CALayer 旋转 90 度?

    如何旋转CALayer90度 我需要旋转所有内容 包括子图层和坐标系 Obj C theLayer transform CATransform3DMakeRotation 90 0 180 0 M PI 0 0 0 0 1 0 Swift
  • 按下表格视图单元格时更改视图?

    我需要帮助 当我的 tableView 的单元格被选择时 我希望该单元格转到它自己的页面 我不希望每个单元格都转到同一页面 我尝试使用 FirstFolderViewController first FirstFolderViewContr

随机推荐

  • 过度使用泛型[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 当没有明显的实际好处时 人们对泛型的
  • 从 CSV 中删除行

    我有一个包含多个标题的 csv 文档 例如 Date RQ PM SME Activity Status code 2 2 12 6886 D WV John Smith Recent 2004 以及一个文本文档 它只是状态代码的列表 每行
  • 将对象传递给网络工作者

    我正在尝试通过 postMessage 函数将对象传递给网络工作者 这个对象是一个正方形 有几个功能可以在画布上和其他东西上绘制自己 Web Worker 必须返回此对象的数组 问题是 当我使用该对象调用 postMessage 函数时 出
  • 将 SendGrid 与 appharbor 一起使用时出现问题

    我正在使用 appharbor 添加 SendGrid 作为插件 他们为我提供了 smtp 主机 smtp sendgrid com 端口 587 用户 32adf793 2cbf 492c 9bb9 apphb com 当我使用这些详细信
  • Collectors#toList 的运行时复杂性

    在Java库源代码中 Collectors toList方法定义如下 public static
  • Mailchimp 注册表单与 angular2 [重复]

    这个问题在这里已经有答案了 我正在尝试将 mailchimp 注册表单嵌入到我的 angular2 应用程序中 http kb mailchimp com lists signup forms add a signup form to yo
  • 取消部署出现错误:应用程序未注册(Glassfish)

    我使用 Glassfish 的 Web GUI 取消部署了我的应用程序 但是 如果我按取消部署我的实际应用程序 则什么也不会发生 在我的日志文件中出现新错误 应用程序未注册 严重 我现在如何正确取消部署我的APP 我找到了一个简单的答案 从
  • SWT:单显示器与多显示器

    SWT 旨在支持多种Display实例 每个实例都有自己的事件循环 这对于什么目的是有用的或需要的 不是一个Display实例 例如Display getDefault 充足的 Display 类的文档说 使用 SWT 构建的应用程序几乎总
  • 无法在 Safari 或 UIWebView 中通过 HTTPS 查看 Quicktime 影片

    我试图让我的 iPhone 应用程序除了 HTTP 之外还可以使用 HTTPS 但使用 UIWebView 或 MPMoviePlayerController 查看 Quicktime MOV 文件似乎无法通过 HTTPS 工作 我得到 这
  • Android 中 OOM(内存不足异常)是如何发生的?

    我正在尝试显示来自画廊的图像或从相机捕获的图像ImageView 我开始得到OOM正在处理中 所以我决定找出它是如何工作的 所以我尝试使用不同尺寸的图像 这是观察结果 我尝试将 19KB 的图像加载到ImageView并收到以下错误消息 无
  • Flutter:在“bottomNavigationBar”上显示“showBottomSheet”

    我如何在 bottomNavigationBar 顶部显示 showBottomSheet 说明性示例 当用户单击图钉 屏幕1 时 结果是 屏幕2 但我想得到 屏幕3 return Scaffold appBar AppBar title
  • 在 PyTorch 中使用 module.to() 移动成员张量

    我正在 PyTorch 中构建变分自动编码器 VAE 但在编写与设备无关的代码时遇到问题 自动编码器是nn Module具有编码器和解码器网络 它们也是 网络的所有权重都可以通过调用从一台设备移动到另一台设备net to device 我遇
  • tkinter python 最大化窗口

    我想将窗口初始化为最大化 但我不知道该怎么做 我在 Windows 7 上使用 python 3 3 和 Tkinter 8 6 我想答案就在这里 http www tcl tk man tcl TkCmd wm htm m8 http w
  • doctype 影响 html/body/canvas 的宽度和高度

    我有一个非常简单的带有画布的 HTML 文件 我已经实现了 resizeToWindow 函数 因此如果用户调整浏览器窗口的大小 画布也会随之调整 但是 我的窗口中出现了滚动条 我注意到画布下方有一个小的白色区域 当我使用元素检查工具时 该
  • 如何记录 PHP + cURL 发出的 http 请求?

    我设置了一个 PHP 脚本 每当在站点上执行操作时都会发出 cURL 请求 问题在于 每当操作运行时 信息都会被 POST 两次 我需要弄清楚这是否是我的问题 cURL 运行了两次 或者它发布到的 URL 执行了两次操作 我想最好的方法是查
  • 根据单元格增加 TableView 高度

    我需要增加UITableView高度基于UITableViewCell内容大小 我正在使用自定义 Google 自动完成 我有一个UITextField 当我在其中输入一个字母时UITextField它会打电话shouldChangeCha
  • 从 SignalR .NET 客户端连接到工作中心时出现 HttpClientException

    我有一个有效的 SignalR 应用程序 它允许我连接多个 JavaScript 客户端并交换数据 当我尝试连接 NET 客户端时 出现以下错误 An exception of type Microsoft AspNet SignalR C
  • SQL 语法错误 - 半正矢公式

    我试图获取最近的地点 https stackoverflow com questions 4645490 get nearest places google maps mysql spatial data 4979891使用 WordPre
  • 如何使用 Orwell Dev-C++ 编译 C++11 代码?

    尝试编译以下代码 include
  • 使用 Quartz 通过 NSTimer 每秒绘制一次 (iPhone)

    我对 Objective C Quartz 比较陌生 遇到的问题可能非常简单 我有一个自定义 UIView 子类 我用它通过 Quartz 绘制简单的矩形 不过 我试图连接一个 NSTimer 以便它每秒绘制一个新对象 下面的代码将绘制第一