storyboard就是之前的nib文件。好处是可以通过拖拽UI的方式来布局。但是我的学习过程走的是另外一种方式,就是手写布局代码。好处是可以加深理解。当然,我觉得最好的方式是把storyboard当作原型来用。这样自己开发之前可以先用storyboard画出界面,以后不会忘记掉。
下面纪录一个手写代码布局的例子,这个例子重写之前写的那个hello world例子。
首先,如之前一样,创建一个Single View Application。然后右键项目下的test2文件夹,选择 New File,然后选择 Cocoa Touch Class,Next,填写一些名称:
注意 subclass要选择 UIViewController。因为是手写布局代码,所以去掉勾选"Also create xib file"。NEXT -> Create.
然后打开 AppDelegate.m 文件。重写application方法:
#import "RootViewController.h"
//先导入刚才新建的类
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//将窗口的大小设为和屏幕大小一样
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//将窗口的背景颜色更改为灰色
self.window.backgroundColor = [UIColor grayColor];
//初始化RootViewController
RootViewController *instance_rootView = [[RootViewController alloc]init];
//设置RootViewController的大小和window的相同
[instance_rootView.view setFrame:self.window.frame];
//将RootViewController设置为根视图控制器
self.window.rootViewController = instance_rootView;
//设置为主窗口并可见
[self.window makeKeyAndVisible];
return YES;
}
点击运行,你会发现模拟器里会茫茫一片,什么也没有。灰色背景是我们刚才添加的主窗口RootViewController。现在我们在主窗口上添加一个按钮吧,打开RootViewController.m,interface里补充这么一行代码:
@interface RootViewController ()
//初始化一个UIButton
@property (nonatomic, strong) UIButton *view_btn;
@end
然后implementation中新增一个方法:
-(void)initRootView{
self.view_btn = [[UIButton alloc]initWithFrame:self.view.bounds];
[self.view_btn setTitle:@"hello" forState:UIControlStateNormal];
//将UIButton添加到RootView上显示
[self.view addSubview:self.view_btn];
}
将initRootView方法放在viewDidLoad方法的结尾调用一下:
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self initRootView];
}
运行一下,你会发现灰色的界面上显示了一个按钮。这个按钮当前还不能点击哟。
我们添加一些方法:
首先修改initRootView方法,在将UIButton添加到RootView上增加一行:
-(void)initRootView{
self.view_btn = [[UIButton alloc]initWithFrame:self.view.bounds];
[self.view_btn setTitle:@"hello" forState:UIControlStateNormal];
[self.view_btn addTarget:self action:@selector(someButtonClicked)forControlEvents:UIControlEventTouchUpInside];
//将UIButton添加到RootView上显示
[self.view addSubview:self.view_btn];
}
然后实现一下点击事件:
-(void) someButtonClicked{
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Hello, World"
message:@"This is my first app!"
delegate:nil
cancelButtonTitle:@"ok"
otherButtonTitles:nil];
[alertView show];
}
ok,再运行下模拟器就可以看到效果了。