精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-11-11
最后修改:2009-11-11
首先注明一下,如果你还不能熟练使用Interface Builder,请最好不要阅读这篇文章。你最好把Interface Builder烂熟于心,才开始走上这条“不归路”比较好。
其次,我说一下为什么要抛开Interface Builder做开发,原因主要是: [1] 更容易做多语言版本。虽然Xib文件是可以多语言化的,不过你重新去建立一些窗口,很麻烦的。 [2] Xib启动需要时间比用代码直接写慢,这个在iPhone上还是有感觉的。特别提示一点,如果自定义UITableViewCell,Cell数量大概6-7个,这个时间你几乎不能忍。 [3] Xib文件比代码建立UI文件大,如果要多语言就更是如此。
因为[1]的存在,可以说,不用Interface Builder做开发,是很有必要的。
Step 1 启动XCode,建立一个Window-base Application项目,这里假设项目名称是NoIBSample
Step 2 在Resource Group下面删除MainWindow.xib
Step 4 去掉关键字IBOutlet 打开NoIBSampleAppDelegate.h,然后去掉@property (nonatomic, retain) IBOutlet UIWindow *window;中的IBOutlet
Step 5 让main函数找到NoIBSampleAppDelegate 打开main.m,然后修改下面这行代码:
int retVal = UIApplicationMain(argc, argv, nil, nil); 改成:
int retVal = UIApplicationMain(argc, argv, nil, @"NoIBSampleAppDelegate"); 别忘了,在文件最开始加上#import "NoIBSampleAppDelegate.h" 好了,你可以在Simulator里面运行一下,应该是个黑屏。这很正常,因为我们没有创建任何Window和View。接下来,我们创键一个默认的View
Step 6 打开NoIBSampleAppDelegate.m,修改函数
- (void)applicationDidFinishLaunching:(UIApplication *)application { CGRect bounds = [[UIScreen mainScreen]bounds]; window = [[UIWindow alloc]initWithFrame:bounds]; CGRect frame = [[UIScreen mainScreen]applicationFrame]; UIView *totalView = [[UIView alloc]initWithFrame:frame]; totalView.backgroundColor = [UIColor whiteColor]; totalView.alpha = 1.0f; [window addSubview:totalView]; [totalView release]; // Override point for customization after application launch [window makeKeyAndVisible]; }
好了,再运行一下就可以看到白色背景了。可以下载源代码NoIBSample.tar.bz2看一下:)
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-11-14
xib限制较多,直接写反而更灵活
|
|
返回顶楼 | |
发表时间:2009-11-14
写得挺好挺详细,这样就可以得到一个没有IB的程序了.
IB开发的view虽然速度慢,但是还没有到不能忍受的程度, 对于没有特殊需求的人,还是不推荐抛开IB的. 有一个例外是基于OpenGL ES的游戏.我现在的做法就是抛开nib file,直接创建一个view,然后拿OpenGL的那个layer往上画.这种方法我还是比较推荐得. |
|
返回顶楼 | |
浏览 7251 次