Archive for 七月 2009

iphone程序的开始画面设置

* iPhone软件启动后的第一屏图片是非常重要的往往就是loading载入中的意思。设置它说来也简单,但是却无比重要

只需要在resource里面将你希望设置的图片更名为Default.png,这个图片就可以成为iPhone载入的缺省图片

屏幕快照 2009-07-25 上午10.50.19

视频播放与通告(Notification)

N 以下是一个非常简单的视频播放代码,并且可以简单的理解Cocoa中的通告使用方法。

- (void)playMovieAtURL:(NSURL*)theURL //简单的方法,传入一个视频地址
{
	MPMoviePlayerController *thePlayer = [[MPMoviePlayerController alloc]
									initWithContentURL:theURL];  //初始化播放器
 
	thePlayer.scalingMode = MPMovieScalingModeAspectFill; //下面有详细的缩放解释
	//thePlayer.userCanShowTransportConstrols = NO;   这个是苹果文档上的原始代码,是错的...
	thePlayer.movieControlMode =  MPMovieControlModeDefault; //缺省视频控制
 
	[[NSNotificationCenter defaultCenter] addObserver:self
	 	 	 	 	 	 selector:@selector(myMovieFinishedCallback:)
	 	 	 	 	 	 name:MPMoviePlayerPlaybackDidFinishNotification thePlayer];
	//注册本地类为thePlayer的通告对象,通告方法为“视频播放结束”,
	//回应方法为myMovieFinishedCallback
	//也就是说,当视频播放结束以后,运行该方法
 
	[thePlayer play];  //播放!
}
- (void)myMovieFinishedCallback:(NSNotification*)aNotification
{
	MPMoviePlayerController *thePlayer = [aNotification object];
	//从通告中导入这个播放器对象,如果播放器是单独的类成员,那就不用这步咯。
 
	[[NSNotificationCenter defaultCenter] removeObserver:self
	 	 	 	 	  	 name:MPMoviePlayerPlaybackDidFinishNotification 
	 	 	 	 	 	 thePlayer];
	//这步非常非常重要,一定要将被监听对象卸载,
	//否则本地对象卸载后,监听对象为nil,软件会崩溃的
 
	[thePlayer release];  //释放视频对象
}

scalingMode缩放模式的四种参数:
-MPMovieScalingModeNone
-不对视频进行缩放

-MPMovieScalingModeAspectFit
-视频缩放到内框,4比3的视频会在左右留下黑框

-MPMovieScalingModeAspectFill
-视频缩放到外框,4比3的视频上下会被削掉一部分

-MPMovieScalingModeFill
-视频被拉伸,失去原始比例

XCode基础快捷键

S

Esc: 自动完成(显示可能的自动完成列表)

Command-Enter: 编译运行

Command-B : 编译

Command-/ : 注释

Command-} : 向右缩进

Command-{ : 向左缩进

Option-Command-Shift : 头文件和m文件间切换

iPhone中的SQLite应用

SQLite是基于C的API,在iPhone中的运行速度超级快(在苹果网站上也有一个对比,确实应该是速度最快的)。

由于在iPhone3.0上已经支持了Core Data,是苹果一个新的API,并且是基于SQlite的。速度也是非常快吧,信不信由你。所以我们对SQLite仅需要懂一些即可,以下是一些基础信息

打开数据库

sqlite3 *database = NULL; //建立一个sqlite数据库变量
 
int sqlite3_open(const char *文件名, sqlite3 **db); //那个文件名需要是cString,
                                                   //之后那个db对象使用我们建立的database变量
 
//以下是一个开打的例子:
NSString *fileAddress = [[NSBundle mainBundle] pathForResource:@"预存文件的文件名" ofType:@"db"]; //db是扩展名
 
if(sqlite3_open([fileAddress UTF8String], &database) == SQLITE_OK) //UTF8String方法转换NSString为cString

执行一个SQLite语句

int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void*,int,char**,char**), void *context, char **error);

关闭一个数据库:

int sqlite3_close(sqlite3 *db); //这个不用解释了吧

一个响应函数的格式:

int callback(void *context, int count, char **values, char **columns);
 
多了暂时就不打了,试试CoreData吧,很酷的。Apple真的会把人惯坏的