CoreGraphics 在 iPhone4 上比在 3G/3GS 上慢

2024-05-24

我有一个用 CoreGraphics 绘制的图表。

该图表可以水平滚动,并且当我们滚动它时就会绘制它。

问题是,在 3G/3GS 上,滚动的速度和性能良好,但在 iPhone 4 上却比预期慢。

我认为这是与 iPhone 4 的高分辨率有关的问题。这是正确的吗?

如何提高 iPhone 4 的性能?框架会自动转换为在iPhone 4分辨率上绘制还是我的工作?

非常感谢。


iPhone 4 可以muchCoreGraphics 处理速度较慢。

针对您的情况的一种可能的想法。当用户滚动时,不要绘制全分辨率,而是绘制与 CoreGraphics 相关的内容半分辨率上下文。然后将该上下文作为位图并将其放大到全分辨率。这仅适用于 iPhone4,您将失去更高分辨率的质量,但仅限于用户滚动时。

这是我为在不同设备之间进行测试而编写的一些代码。

我在全屏显示视图时的结果。

  • 3G, 9 FPS
  • 3GS, 16 FPS
  • i4, 5 FPS(无赖)

CoreGraphicsTestView.h

#import <UIKit/UIKit.h>
@interface CoreGraphicsTestView : UIView 
{
    int displayCounter;
    float displayInterval;
    char fps[50];
}
@end

CoreGraphicsTestView.m

#import "CoreGraphicsTestView.h"
#define RNDN(s, e) ((((CGFloat)rand() / (CGFloat)INT_MAX) * ((e)-(s)) + (s)))
#define RNDX(s, e, r) (RNDN((s), (e)) * (r).size.width)
#define RNDY(s, e, r) (RNDN((s), (e)) * (r).size.height)
#define RNDR(r) (CGRectMake(RNDX(0,0.50,(r)),RNDY(0,0.50,(r)),RNDX(0.50,1.0,(r)),RNDY(0.50,1.0,(r))))
@implementation CoreGraphicsTestView
- (id)initWithFrame:(CGRect)frame 
{
    if ((self = [super initWithFrame:frame])) 
    {
        self.backgroundColor = [UIColor blackColor];
        srand(time(NULL));
        fps[0] = '\0';
    }
    return self;
}
- (void)updateDisplayCounter:(CGContextRef)c rect:(CGRect)rect
{
    displayCounter++;
    float now = (float)clock() / (float)CLOCKS_PER_SEC;
    if (now - displayInterval > 1)
    {
        sprintf(fps, "%0.0f", displayCounter / (now - displayInterval));
        printf("%s\n", fps);
        displayInterval = now;
        displayCounter = 0;
    }
    CGContextTranslateCTM(c, 5, 40);
    CGContextScaleCTM(c, 1.0, -1.0); 
    CGContextSetFillColorWithColor(c, [UIColor whiteColor].CGColor);
    CGContextSelectFont(c, "Arial", 18, kCGEncodingMacRoman);
    CGContextShowTextAtPoint(c, 0, 0, fps, strlen(fps));
}
- (void)setRandomColor:(CGContextRef)c
{
    CGFloat components[4] = {1,RNDN(0, 1),RNDN(0, 1),RNDN(0, 1)};
    CGContextSetFillColor(c, components);
}
- (void)drawRect:(CGRect)rect
{
    CGContextRef c = UIGraphicsGetCurrentContext(); 
    for (int i=0;i<5;i++)
    {
        [self setRandomColor:c];
        CGContextFillRect(c, RNDR(rect));
        [self setRandomColor:c];
        CGContextFillEllipseInRect(c, RNDR(rect));
    }
    [self updateDisplayCounter:c rect:rect];
    [self performSelector:@selector(setNeedsDisplay) withObject:nil afterDelay:0.0];
}
@end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CoreGraphics 在 iPhone4 上比在 3G/3GS 上慢 的相关文章

  • 在 didSelectRowAtIndexPath 访问自定义标签属性

    我在 cellForRowAtIndexPath 处的每个单元格都有一个 UILabel UILabel cellLabel UILabel alloc initWithFrame frame cellLabel text myString
  • iPhone/iPod 模拟器和设备之间的差异

    自从我开始 iPhone iPod 开发以来 我发现模拟器和真实设备的反应之间存在一些差异 也许我会遇到一些其他差异 我也必须弄清楚 也许其他人还没有在这里遇到这些问题 并且可以从知识中受益 也许你知道一些你本来会遇到的问题 差异很高兴在您
  • 核心数据的标准化或规范化字符串?

    我观看了一些有关 Core Data 的 WWDC 视频 并计划维护规范化的文本属性 假设我有以下数据 originalString normalizedString lowercase nsker onsker onsker onsker
  • Corona、Phonegap、Titanium 之间的比较

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我是一名 Web 开发人员 我想将我的 Web 产品迁移到 iPhone 其中一款产品就像Go
  • Firebase FCM 推送通知停止工作 iOS 11.1.1

    我正在使用 Firebase FCM 从 iOS 设备发送推送通知 直到昨天 推送通知仍然有效 当我现在发送推送通知时 一切都显示成功 但设备上没有收到任何信息 如果我直接通过curl请求发送 这就是响应 multicast id 7815
  • 设置捆绑包中组的标题页脚

    How can I leave a message under group type in Setting bundle something like this 它记录在这里 https developer apple com librar
  • iPhone:两个 RootViewController 之间的淡入淡出过渡

    Obj C or MonoTouch C 答案很好 初始 UIWindow 的 RootViewController 是一个简单的登录屏幕 window RootViewController loginScreen 登录后 我将根设置为主应
  • iPhone 版 Twitter 书签如何工作?

    Twitter 客户端 以前称为 Tweetie 允许您在 Safari 中定义启动应用程序的书签 我想知道哪个 iPhone API 允许您注册协议说明符 或任何名称 在本例中为 tweetie 以便此小书签正常工作 可以找到说明here
  • 带有徽章编号的 UISegmentedControl

    就像标签栏一样 我想在其上显示徽章UISegmentedControl 因为我看不到任何预定义的方法UISegmentedControl就像可用于UITabBar 我考虑过将徽章作为图像添加到其顶部 但也许有更好的方法 Here https
  • 核心动画的鱼眼效果?

    我正在尝试实现类似于 ABC News iPad 应用程序的地球仪的效果 是不是可以通过改造CALayers来得到这个效果呢 或者这是使用 OpenGL 和片段 顶点着色器 CALayer 提供对变换矩阵的访问 是否有一些数学可以应用于此而
  • iphone / css - 单击时如何防止项目上出现黑色半透明覆盖

    我正在编写一个移动网站 在 iPhone 中 当您触摸 按住可点击项目时 图像顶部会出现明显的半透明黑色覆盖层 有人经历过这个吗 我该如何摆脱它 有没有办法用css 这是我的代码 childLink div class option div
  • 如何在可可中获取图像的作者

    我不明白为什么metaDic 总是为空 有一个代码 CFDataRef dataRef CGDataProviderCopyData CGImageGetDataProvider img CGImage UIImage img CGImag
  • 解决听写/自定义文本视图错误

    我有一个实现的视图UIKeyInput并覆盖shouldBecomeFirstResponder回来YES 点击此视图时 键盘会弹出 如果用户点击听写按钮 按下 完成 然后尝试关闭键盘 应用程序将崩溃并显示 Fatal Exception
  • iPhone - 动画视图控制器演示

    我有一个 UINavigationControl 我想呈现一个视图控制器 将其从顶部推送 并将其从视图中删除 将其推送到顶部 有没有办法更改调用时使用的默认动画 self navigationController pushViewContr
  • 从 iPhone 上的 NSString 中删除 HTML 标签

    有几种不同的方法可以删除HTML tags从一个NSString in Cocoa One way http cocoa karelia com Foundation Categories NSString Flatten a string
  • 记录使用 OpenAL 播放的样本

    我在 iOS 上使用 OpenAL 同时播放 9 个循环 为了使循环 100 同步 它们开始在不同的线程上运行 有关使用 OpenAL 记录正在播放的内容的任何指示 教程 如果我使用不同的线程 我会遇到录制问题吗 iOS 上的 OpenAL
  • 将用户重定向到 iTunes 应用商店或 Google Play 商店?

    我正在寻找一种简单的解决方案来发布我的应用程序的一个链接 例如在 Facebook 上 如果用户使用移动设备访问它 它应该自动重定向到正确的应用程序商店 否则 用户应该被重定向到我的网站 iOS应用程序 http itunes apple
  • 处理 NSPropertyListSerialization 中的 CFNull 对象

    在我的应用程序中 我尝试序列化服务器响应字典并将其写入文件系统 但对于某些响应 我收到错误 属性列表格式无效 原因是服务器响应中的 CFNull 对象 现在 服务器响应将不断变化 因此我没有明确的方法来删除 CFNull 对象 下面是我的代
  • 无法下载应用程序 - 此时无法下载“APP”

    我的应用程序有 PLUS 版本和常规版本 我使用不同的目标对它们进行存档 我将 ipa 上传到 TestFlight 也上传到我的曲棍球服务器 PLUS 版本总是下载得很好 但普通版本总是给我 无法下载应用程序 错误 我根本没有更改两个版本
  • 如何获取 UITableView 内容视图的大小?

    我想在填充表格时获取 UITableView 内容视图的大小 关于如何执行此操作有什么建议吗 Allows you to perform layout before the drawing cycle happens layoutIfNee

随机推荐

  • 通过查询字符串传递“Bearer”时 SignalR 身份验证失败

    我想在 SignalR 中启用身份验证 而服务器托管在 ASP NET WebAPI 中 我使用 OAuth Bearer 身份验证 客户端是 AngularJS 在客户端 我最初通过 HTTP 标头传递 Bearer 令牌 它与 WebA
  • FCM HTTP V1 API 对于未注册的令牌返回 404

    当设备未注册 应用程序已卸载 时 FCM HTTP v1 API 应该返回错误代码 UNREGISTERED 然而 API 返回 404 未找到请求的实体 有人经历过这个吗 这是预期的吗 文档中没有任何地方提到这一点 当收到消息 未找到请求
  • 通过ExternalProject_Add 使用 pybind11 进行 CMake 项目的智能方法

    我正在使用编写一个 python 模块pybind11 with CMake3 9 4 因为方便所以想下载pybind11源文件使用ExternalProject Add in my CMakeLists txt 当我跑步时cmake 它不
  • 立即调用 Swift UIView animateWithDuration 完成闭包

    我期望在指定的持续时间后调用此 UIView 动画的完成闭包 但它似乎立即触发 UIView animateWithDuration Double 0 2 animations self frame CGRectMake 0 self bo
  • 如何在elasticsearch索引中一起使用ngram和edge ngram tokenizer?

    我有一个包含 3 个文档的索引 firstname Anne lastname Borg firstname Leanne lastname Ray firstname Anne middlename M
  • 如何使用 jQuery 检测浏览器是否关闭

    我需要使用 jQuery 检测浏览器是否被关闭 如果是这样 则执行一个事件 我的网站上有一个聊天功能 很像 Facebook 可以让用户在导航到网站结构中的其他页面时保持登录状态 但如果他们单击 则需要将他们从聊天中注销 这样他们就不会在线
  • Java 相当于 Python 的 urllib.urlencode(基于 HashMap 的 UrlEncode)

    From https stackoverflow com questions 2018026 should i use urllib or urllib2 2018103 2018103 Java 中 Python 的 urllib url
  • 角度距离计算

    我正在使用角度制作距离计算应用程序 Html
  • 从文本文件更新 wiki 消息

    是否可以让我的 wiki 从 txt 文件加载一行文本并将其显示在主页上的某个位置 像 每日消息 这样直接来自 txt 文件并且不涉及手动编辑 wiki 的东西 我的wiki运行在Ubuntu Mate上 如下 UPDATE 根据亚历山大的
  • 在模块中使用shiny的renderUI

    这是我在 stackoverflow 上的第一个问题 我在闪亮 1 0 5 中遇到模块和 renderUI 的问题 当我在中使用 renderUI 时 Main Part ui lt bootstrapPage uiOutput Dynam
  • R 中的整数或双精度列表

    我有一个大约 1000 个整数的列表 我需要能够进行一些数学计算 但它们被困在列表或字符形式中 我怎样才能切换它们以便它们可用 样本数据 gt y 1 1 7 3 1 6 7 1 7 6 5 3 1 3 3 0 6 2 4 9 19 1 9
  • 用户的完整 UNIX 用户名

    想知道您是否知道是否有一种巧妙的方法可以从 shell 获取完整的用户名 示例 如果我的 UNIX 用户名是 froyo 那么我想获取我的全名 在本例中 如系统中注册的那样 froyo Abhishek Pratap Finger 命令可以
  • 如何以编程方式伪造 UIButton 的触摸事件?

    我正在编写一些单元测试 并且由于这个特定应用程序的性质 重要的是我要达到尽可能高的水平UI链尽可能 因此 我想做的是以编程方式触发按钮按下 就好像用户按下了按钮一样GUI 是的 是的 我could只需致电IBAction选择器 但同样 这个
  • 树的子节点/节点上的单击事件

    我真的对 ExtJs 树对象感到困惑 我的代码有问题 但我不知道是什么 考虑我有这个代码 var store Ext create Ext data TreeStore root expanded true children text de
  • 在Python中打开网站框架或图像

    所以我对 python 相当熟练 并且经常使用 urllib2 和 Cookies 来实现网站自动化 我刚刚偶然发现了 webbrowser 模块 它可以在默认浏览器中打开一个网址 我想知道是否可以从该 url 中仅选择一个对象并打开它 具
  • Javascript For 循环在 dom 元素上执行[重复]

    这个问题在这里已经有答案了 我有 javascript 代码来获取具有类名称的元素 并迭代从元素中删除该类 var elements document getElementsByClassName test console log Leng
  • 在线和离线管理 iPhone 应用程序

    我被困在一个点上 我也在离线管理我的应用程序 第一次我从网络服务获取所有配置文件数据并将其路径存储到 sqlite 中时 我在更新这些数据时遇到问题 例如如果图像发生更改 我应该如何通知我的应用程序 我在 Google 上搜索了它 唯一的解
  • C#:自定义转换为值类型

    是否可以将自定义类转换为值类型 这是一个例子 var x new Foo var y int x Does not compile 是否有可能实现上述情况 我需要超载一些东西吗Foo 您将必须重载强制转换运算符 public class F
  • DataGridView 行背景颜色没有改变

    我想根据加载时的特定条件更改 DGV 行的背景颜色 即使在 Windows 窗体中也是如此 但我看不到任何 DGV 行的颜色有任何变化 谁能告诉我如何解决这个问题 private void frmSecondaryPumps Load ob
  • CoreGraphics 在 iPhone4 上比在 3G/3GS 上慢

    我有一个用 CoreGraphics 绘制的图表 该图表可以水平滚动 并且当我们滚动它时就会绘制它 问题是 在 3G 3GS 上 滚动的速度和性能良好 但在 iPhone 4 上却比预期慢 我认为这是与 iPhone 4 的高分辨率有关的问