澄清这个问题的目的:我知道如何用两个子视图和使用drawRect创build复杂的视图。 我试图完全理解何时以及为什么要使用一个。 我也明白,提前优化是没有意义的,而在做任何分析之前,要做一些更困难的事情。 考虑到我对这两种方法都很满意,现在真的想要更深入的了解。 很多我的困惑来自于学习如何使桌面视图滚动性能真正平滑和快速。 当然这个方法的原始来源是来自iPhone 后面的作者 (以前tweetie)的作者。 基本上说,为了让桌面滚动顺滑,秘诀是不使用子视图,而是在一个自定义的uiview中做所有的绘图。 从本质上讲,使用大量的子视图似乎减慢了渲染速度,因为它们有很多开销,并且不断地在其父视图上重新合成。 公平的说,这是在3GS是新品牌的时候写的,iDevices从那以后变得更快了。 这种方法在互联网和其他地方也经常被 build议用于高性能表格。 事实上,这是苹果公司的示例代码中的一个build议的方法,已经在几个WWDCvideo( 适用于iOS开发人员的实用绘图 )和许多iOS 编程书籍中被提出 。 甚至有令人敬畏的工具来devisegraphics,并为它们生成Core Graphics代码。 所以一开始我就会相信“Core Graphics存在的原因是很快的,这很快! 但是,只要我认为我的想法是“尽可能地支持核心graphics”,我开始发现drawRect经常对应用程序的反应不佳负有责任,这是非常昂贵的内存明智的做法,并且真正对CPU征税。 基本上,我应该“ 避免重写drawRect ”(WWDC 2012 iOS应用程序性能:graphics和animation ) 所以我想,就像一切,这是复杂的。 也许你可以帮助自己和其他人了解什么时候使用drawRect? 我看到一些明显的情况下使用Core Graphics: 你有dynamic数据(苹果股票图例) 你有一个灵活的UI元素,不能用一个简单的可resize的图像执行 您正在创build一个dynamicgraphics,一旦呈现在多个地方使用 我看到情况,以避免核心graphics: 您的视图的属性需要单独设置animation 你有一个相对较小的视图层次,所以使用CG所感知的额外努力是不值得的 你想要更新视图的片断而不用重绘整个事物 父视图大小更改时,需要更新子视图的布局 所以赋予你的知识。 在什么情况下你达到drawRect / Core Graphics(这也可以通过子视图来完成)? 什么因素导致你做出这个决定? 如何/为什么在一个自定义视图中绘制推荐用于平滑表格单元格滚动,但是苹果build议通常针对性能原因使用drawRect? 简单的背景图像(什么时候用CG创build它们,使用可resize的PNG图像)? 对这个主题的深入理解可能不需要做出有价值的应用,但是我不喜欢在不能解释原因的情况下select技术。 我的大脑对我生气。 问题更新 感谢大家的信息。 一些澄清的问题在这里: 如果你正在绘制核心graphics的东西,但可以用UIImageViews和预渲染的PNG完成同样的事情,你应该总是走这条路线吗? […]
我想知道是否有什么好的build议在iPhone模拟器截图的应用程序。 我尝试过的应用程序,如iPhone截图裁剪,但我正在寻找的东西,可以让我做出更大的图像。 例如足够大,可以放上一张海报。 有什么build议么?
我希望能够得到我的iOS项目/应用程序的当前版本作为一个NSString对象,而不必在某个文件中定义一个常量。 我不想在两个地方更改我的版本值。 当我在项目目标摘要中碰撞我的版本时,需要更新该值。
如何设置UIScrollView滚动到顶部?
我正在努力寻找这个问题的一个很好的解决scheme。 在视图控制器的-viewWillDisappear:方法中,我需要find一种方法来确定是因为视图控制器被推到导航控制器的堆栈上,还是因为视图控制器因为popup而消失。 目前我正在设置标志,如isShowingChildViewController但它变得相当复杂。 我想我可以检测到的唯一方法是在-dealloc方法。
我曾经能够启动iPhone模拟器后,键入我的真正的Mac键盘。 使用屏幕模拟器键盘进行打字在使用大量文本进行testing时非常可怕。 不pipe我做什么,我都无法让我的键盘在模拟器中input。 即使我将“模拟硬件键盘”打开,它也不会input任何内容。 有人能告诉我我做错了什么吗? 有没有办法使用真正的键盘input?
我正在实施推送通知。 我想将我的APNS令牌保存为一个string。 – (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { NSString *tokenString = [NSString stringWithUTF8String:[newDeviceToken bytes]]; //[[NSString alloc]initWithData:newDeviceToken encoding:NSUTF8StringEncoding]; NSLog(@"%@", tokenString); NSLog(@"%@", newDeviceToken); } 代码的第一行输出null。 第二个打印令牌。 我怎样才能得到我的newDeviceToken作为一个NSString?
我的团队和我有一个应用程序,我们将很快提交到商店,但我们知道,我们将在不久的将来将应用程序出售给另一家公司。 有没有人有移动应用程序的所有权到另一个帐户的经验? 具体来说,当我将应用程序出售给其他公司时 我们如何将应用程序移动到他们的帐户(机制是什么)? 我的用户是否仍然可以获得更新(由新所有者发布),而无需重新购买/重新下载应用程序?
我想创build一个iPhone应用程序,使用类似于链接中所示的导航场景 请注意,我不希望这只适用于iPad,我希望它完全适用于iPhone的图片,当你点击一个桌面视图项目,它隐藏桌面视图,并使该视图全屏。 我想要如何做到这一点的想法,因为我不能自己搞清楚。 谢谢
有什么办法可以根据需要有一个标签wordwrap文本? 我将换行符设置为换行符,标签对于两行来说足够高,但似乎只会换行。 我必须添加换行符才能正确换行吗? 我只是想要它包装,如果它不能水平适应它。