为了演示如何使用MHLazyTableImages这个类,可以修改苹果官方的LazyTableImages例子项目。现在图片下载的逻辑由MHLazyTableImages和MHImageCache类来处理。TableViewController只做创建一个MHLazyTableImages实例和连接其数据模型与它的表示图。

放置图片到表格单元中:调用addLazyImageForCell:withIndexPath:方法。
这个方法首先会查看是否图片已经存在于缓存中,如果没有则下载之。

- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath
{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:...];
if (cell == nil)
cell = [[[UITableViewCell alloc] initWithStyle:...];

cell.textLabel.text = ...;
[lazyImages addLazyImageForCell:cell withIndexPath:indexPath];
}

当然,你需要告诉MHLazyTableImages关于图片的URL,就发生在一个委托的回调方法中。

- (NSURL*)lazyImageURLForIndexPath:(NSIndexPath*)indexPath
{
AppRecord* appRecord = [self.entries objectAtIndex:indexPath.row];
return [NSURL URLWithString:appRecord.imageURLString];
}

用委托而非直接告诉MHLazyTableImages中单元格应该的URL——是为了适应滚动。当正在滚动时,我们不希望图片还装载。我们将推迟下载,直到用户停止滚动。lazyImageURLForIndexPath:新的可见行会自动调用。

 

posted @ 2012-02-10 20:12 张智清 阅读(1) 评论(0)  编辑
摘要: 以下类文件可帮我们用UIKit和QuartzCore框架来绘制向量图形。类似这个饼图(Pie Charts)。阅读全文
posted @ 2012-02-10 14:34 张智清 阅读(3) 评论(0)  编辑
摘要: Xcode的调试器为用户提供了一个GDB的图形化界面,GDB是GNU组织的开放源代码调试器。您可以在Xcode的图形界面里做任何事情;但是,如果您需要您可以在命令行里使用GDB的命令,且gdb可以在终端运行,也可以在Xcode下的控制台(Console Drawer)中运行。 要在一个调试的任务里输入GDB命令行命令: 在工具栏里点击Console Drawer (控制台抽屉窗口)按钮打开控制台。 您可以在控制台里查看Xcode调试器发送给GDB的命令,或者您可以直接在控制台里输入GDB命令。在控制台窗口里点击然后在gdb提示符后面输入命令。阅读全文
posted @ 2012-02-09 13:28 张智清 阅读(10) 评论(0)  编辑
摘要: 本文转载自:http://blog.csdn.net/favormm/article/details/6893465 由于正式版的iOS5出来了,所以我也试着去升级了。于是下载了最新的Xcode,才1.7G左右,比以往的安装包要小许多。 升级Xcode后,打开以前创建的工程, 运气好,一个错误都没有,程序也能正常跑起来。由于我程序中用了ASIHttpRequest这个库,让我发现了一个小问题,就是 ASIAuthenticationDialog这个内置对话框在网络有代理的情况下出现,然后无论点cancle或是login都不能dismiss。在4.3的SDK中完全没问题,在5.0的SDK中就会在Console中看到输出:阅读全文
posted @ 2012-02-08 19:34 张智清 阅读(19) 评论(0)  编辑
摘要: 直接上转载代码吧!阅读全文
posted @ 2012-02-03 23:13 张智清 阅读(27) 评论(0)  编辑
摘要: 问题:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[UIBarButtonItem BarButtonItemWithTitle:type:target:action:]: unrecognized selector sent to class 0x87600c' 环境:XCode4.2 场景:这种问题多发生在XCode4.2 移植低版本项目时出现,编译无问题,在运行是crash。 原因:unrecognized selector sent to class,特别注意下这里面的class,这里的处理方法和unrecognized selector sent to intance,方法是完全不同的。前者主要原因是在.h文件中声明和实现多个类导致的(未从苹果文档上找到详细对应的条款,如果有谁知道可以告知下)。后面的问题主要是临时变量引起的。阅读全文
posted @ 2012-02-03 19:23 张智清 阅读(16) 评论(0)  编辑

想要在自己的iPhone项目工程中使用自定义字体,需要进行如下设置:
1. 确定你项目工程的resource资源文件夹下有所要用的字体文件(.ttf,.odf)。

2. 在Info.plist配置文件中新建一行(Add Row),添加key为:UIAppFonts,类型为Array或Dictionary都行;在其下建立一对键值对,key为item 0,而Value为该字体名称(如:xxfont.ttf)。 

3. 在要使用自定义字体的项目代码中书写:实例对象.font = [UIFont fontWithName:@"xxfont" size:20.0];即可。

posted @ 2012-01-20 19:38 张智清 阅读(31) 评论(0)  编辑
摘要: 基本概念: 场景Scenes:是一个特殊的节点,它是所有节点的基础。场景的目的在于呈现出游戏的可操作部分和展现游戏场景(如:游戏结束、主页面和高分排行榜等)。 图层Layer:它呈现出的是玩游戏的具体区域。与Photoshop的图层作用类似。这意味着某个场景可以由多个图层构成。一个图层承载背景画面,另一个图层可呈现游戏动作发生之初。 精灵Sprites:指的是那些真正赋予游戏灵魂的事物,即游戏的角色。比如,若制作太空游戏,则你的飞船和敌人就是各个游戏精灵。用于深化用户游戏体验的每个角色都可以当成是精灵。阅读全文
posted @ 2012-01-20 16:57 张智清 阅读(86) 评论(0)  编辑

一、开启Retina高清支持
在cocos2d的AppDelegate.m文件中默认是将高清模式注释屏蔽掉的,需要我们手动取消注释后开启[director enableRetinaDisplay:YES]。

// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
// if( ! [director enableRetinaDisplay:YES] )
// CCLOG(@"Retina Display Not supported");

二、获取当前iOS设备屏幕宽高

CGSize size = [[CCDirector sharedDirector] winSize];

三、改变游戏速度

[[CCScheduler sharedScheduler] setTimeScale:2.0f]; //设为正常的2倍

四、禁止自动锁屏

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

五、获取触摸点在整个屏幕中的坐标

// 返回一个UIView相关的坐标viewPoint
CGPoint viewPoint = [touch locationInView:[touch view]];

// 获得触摸点在整个屏幕中的坐标
[[CCDirector sharedDirector] convertToGL:viewPoint];

六、获取触摸点相对于某个精灵的坐标

CGPoint touchPoint = [sprite convertTouchToNodeSpaceAR:touch];

七、游戏中背景音乐的循环播放

[[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background.wav"  loop:YES]








 

posted @ 2012-01-20 16:27 张智清 阅读(40) 评论(0)  编辑
摘要: 有时候,就那么喜欢另类。偏偏不要cocos2d默认的横屏显示,那我们具体要如何定义修改成竖屏呢? 首先,采用cocos2d创建一个默认项目,在applicationDidFinishLaunching里对于屏幕的设置代码如下: #if GAME_AUTOROTATION == kGameAutorotationUIViewController [director setDeviceOrientation:kCCDeviceOrientationPortrait]; #else [director setDeviceOrientation:kCCDeviceOrientationLandscapeLeft]; #endif 现在直接修改成[director setDeviceOrientation:kCCDeviceOrientationPortrait];已经无法实现竖屏显示了。经摸索找到以下方法:阅读全文
posted @ 2012-01-20 16:01 张智清 阅读(54) 评论(0)  编辑