用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"]];


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

事件的响应和对象的引用——outlet和action

什么是outlet: outlet
  • ginodung
  • ginodung
  • 2014年11月08日 15:56
  • 519

iOS storyBoard 页面间跳转的三种形式

iOS storyBoard 页面间跳转的三种形式 第一种:在  A 界面,创建一个按钮,直接拖跟线到 B 界面,选择跳转方式,model 或者 push ;如图:右键选中按钮,直接拖拽一条线到On...
  • ljh910329
  • ljh910329
  • 2015年03月30日 20:30
  • 953

ios中几种跳转方式,普通,和StoryBoard跳转

一、纯代码界面跳转方式     1.导航控制器(UINavigationController)     [self.navigationController pushViewController:...
  • Zomfice
  • Zomfice
  • 2016年07月18日 11:52
  • 2536

iOS开发进阶-使用多个StoryBoard划分项目

前言:在实际来发中,作者一般都是使用纯代码的方式进行开发,国内很多开发者都喜欢使用纯代码进行开发,一方面是代码可维护性比较高,另一方面也是因为StoryBoard团队协作的诟病。不过如果把一个项目拆分...
  • u011496891
  • u011496891
  • 2016年09月18日 23:49
  • 1592

iOS StoryBoard自适应布局

原文地址:点击打开链接 通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步。在一个storyboard文件中适配iPad和iPhone的布局在iOS...
  • u012265444
  • u012265444
  • 2016年07月13日 09:18
  • 2510

iOS开发Storyboard中UITableView顶部默认空白 - 芒果iOS

【主要内容:】 1. 问题描述 2. 问题分析 3. 解决问题办法 一、问题描述 前两天开发的时候在StoryBoard中创建了一个UITableView,但是拖...
  • CrazyZhang1990
  • CrazyZhang1990
  • 2017年02月27日 17:01
  • 594

iOS 在storyboard/xib中设置UIView的圆角等属性

通常我们给UIView及其子控件设置圆角时一般都是通过代码进行设置的,现在我做的项目中大部分界面都是通过storyboard或xib创建的,这时候我要让界面中的UIImageView有圆角,如果这时候...
  • wang_1992
  • wang_1992
  • 2016年03月13日 00:38
  • 3000

多storyboard协作开发

1.IOS、Mac开发使用代码、xib、storyboard布局的思考; 2.多人项目中使用storyboard开发。 3.使用Storyboard References模块化App...
  • kaka_2928
  • kaka_2928
  • 2016年04月12日 15:41
  • 1100

Storyboard中使用xib定义的view

前言我们在开发项目的时候,有些人选择纯代码,有些人选择storyboard,也有些人选择xib,当然各有各的好处。在此就不做讨论。 以前做的一个项目用的storyboard结合autoLayout,...
  • u010411521
  • u010411521
  • 2015年11月04日 16:00
  • 1592

IOS—使用Storyboard实现复杂界面

Storyboard是IOS5以后新增的内容,从名字上看,是以故事面板的形式来展现界面间的逻辑关系,Storyboard的功能很强大,今天就简要介绍Storyboard的基本使用,界面间的关系,以及如...
  • qq_17007915
  • qq_17007915
  • 2015年10月22日 11:39
  • 752
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用storyboard开发IOS页面的一点体会
举报原因:
原因补充:

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