用storyboard开发IOS页面的一点体会

原创 2013年12月05日 16:24:39

刚接触IOS开发不到10天,只写了一些后台的逻辑代码,对Objective-C和cocoa touch的API有点感觉了。不过今天开始尝试用storyboard开发UI,还是不太习惯,本文简单记录一下

总的理解

ios中一个页面称为一个scene,一般就对应一个ViewController,或者一个XIB文件。而storyboard则是把应用中的scene都串联起来。一个ViewController下面一般只会有一个view的层次结构,构成了应用的UI

自动创建View

我不知道以前开发ios是怎么做的,可能也需要写代码来初始化ViewController吧。不过今天用storyboard来开发,似乎不需要,storyboard会隐式地创建和初始化配置的ViewController,以及ViewController下面挂的所有View组件

所以一般不需要写这样的代码:

- (void)viewDidLoad    
{    
    [super viewDidLoad];    
    self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];    
    NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]];    
    [self.view addSubview: self.webView];    
    [self.webView loadRequest:request];    
}

总的来说,UI的开发可以在storyboard里通过图形化界面来完成。不过在需要的时候,也可以编码来实现,不过UI的API我还不太熟

获取View的引用

虽然storyboard自动创建了View组件,但是代码里还是需要拿到它们的引用才可以。在android里经常可以看到这样的代码:

mobileNumberLayout = (LinearLayout) findViewById(R.id.mobileNumberLayout);
sendValidateCodeTv = (TextView) findViewById(R.id.sendValidateCode);

主要就是findViewById这个API,在ios开发里不需要这样调用,View在Controller里的引用有个术语称为IBOutlet,只要在storyboard里拉线,就可以直接引用了:

// 刷新进度条和文本
- (void) refreshProgressTo: (float)stage WithContent:(NSString*)content
{
    [self.loadingLabel setText:content];
    [self.progress setProgress:stage animated: YES];
}

这点我觉得还是挺方便的,要善用storyboard里的connections inspector面板,里面会显示有哪些Outlet,Action,Segue等,很方便

用Action响应UI事件

最后是怎么响应UI事件,比如按钮按下,文本框内容变化等……

在android里比较类似html里的写法,有onclick之类的。在ios里也差不多,主要是target-action模型。View Controller称为target,然后可以设置各种Action。而View会发出Event,可以配置Event会触发target上的哪个Action

Action的函数必须是这种格式:

-(IBAction) doSomething:(id*) sender
{
    NSLog(@"hahaha",nil);
}

然后在storyboard里就会识别出这是个Action,可以通过拉线跟View的Event关联起来

如果不用storyboard的话,也一样是这个模式,只不过需要自己写代码注册Action和Event的关联关系,方法是在UIControl中定义的:

-(void)addTarget:(id)target action:(SEL) forControlEvents:(UIControlEvents)controlEvents

举例:

[self.btnCooking addTarget:self action:@selector(pressCooking:) forControlEvents:UIControlEventTouchUpInside];

上面这段代码,当btnCooking发出TouchUpInside事件时,就会调用Controller上的pressCooking函数(@selector在OC中就是方法的意思)

感想

既然能拿到View的引用,又能设置Action,那基本就什么都能做了。有些功能用storyboard来实现还是不错的,特别是auto layout似乎挺多人都说挺好。不过也要熟悉ios UI相关的API,在必要的时候才能编码来实现

PS:

下面是一个给UIView设置背景图片的代码,挺好用的:

self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"welcome.jpg"]];


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ios storyboard页面跳转演示

  • 2015年12月23日 13:53
  • 63KB
  • 下载

iOS storyboard上图片设置适配的一点经验

Xcode 的storyboard是个很好用的东西,但是在放控件和适配上就不是那么好调配,这里分享一下自己的一点经验。 一般设置都会用 Auto layout,而且是在4英寸的屏幕上直接拉好图片,放...

【iOS界面处理】使用storyboard实现页面跳转,简单的数据传递

由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我也追随时尚,直接开始使用storyboard。(不料在涉及到页面跳转的时候,遇到的问题是:点击后没有任何反应)众所周知,...

iOS中使用storyboard实现页面跳转,Segue详解及简单的数据传递

 由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我也追随时尚,直接开始使用storyboard。(不料在涉及到页面跳转的时候,遇到的问题是:点击后没有任何反应)众...

【iOS界面处理】使用storyboard实现页面跳转,简单的数据传递

由于最近才接触到IOS,苹果已经建议storyboard来搭建所有界面了,于是我也追随时尚,直接开始使用storyboard。(不料在涉及到页面跳转的时候,遇到的问题是:点击后没有任何反应)众所周知,...

IOS--storyboard页面切换与传值

一、storyboard页面切换 假设view controller1下有一个button1,view controller2下有一个button2,我们要实现storyboard在这两个vie...

IOS开发-使用Storyboard进行界面跳转及传值

前言:苹果官方是推荐我们将所有的UI都使用Storyboard去搭建,Storyboard也是一个很成熟的工具了。使用Storyboard去搭建所有界面,我们可以很迅捷地搭建出复杂的界面,也就是说能为...

iOS开发教程:Storyboard全解析

  • 2014年05月29日 14:10
  • 3.62MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用storyboard开发IOS页面的一点体会
举报原因:
原因补充:

(最多只允许输入30个字)