http://blog.csdn.net/inte_sleeper/article/details/8633608
最近开始看iOS开发,看了个把星期,写几篇笔记。顺序有点乱,想到什么写什么好了。
因为上周刚刚参加了一个hybrid app开发的培训,感觉Hybrid app开发是一个比较好的方式,可以充分利用web页面布局的特性(当然,还重用了web开发的知识),避免写纯native app UI的痛苦。而目前纯HTML5的开发,虽然也有相关的应用,但是有时又损失了hybrid方式的灵活性。
当然hybrid app也有它自己的问题需要解决,如加载空白、服务器端错误处理、缓存等,不同的公司一般都会基于这些问题提供一个底层的通用包,以方便在此基础上进行开发,比如:http://windvane.m.taobao.com/windvane.htm#svninfo
下面是一个最简单的Hybrid app demo:
1. 使用Xcode,新建一个项目,在项目类型中,选“Single View Application”。名字随便起,比如叫HelloHybridApp。
2. 完成之后,我们就看到项目中有下列文件:
-AppDelegate.h
-AppDelegate.m
-MainStoryboard.storyboard
-ViewController.h
-ViewController.m
+Supporting Files
-HelloHybridApp-info.plist
-InfoPlist.strings
-main.m
...
iOS中访问网页,是通过UIWebView控件实现的。因此我们需要使用interface builder,拖入一个UIWebView控件。
然后在Connections Inspector中创建控件与变量的connection。
也就是说在ViewController.h中,变成了这样:
[plain]
view plaincopy#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
接下来,我们需要程序在打开的时候,能够加载一个网页。这有两种方式:本地离线网页和在线网页。下面分别会就这两种情况来示例。1. 本地离线网页
我们需要添加一个离线的网页,在Supporting Files中添加一个index.html,内容如下:
[html]
view plaincopy<!DOCTYPE html>
<html>
<head>
<title>Hello, Hybrid App</title>
</head>
<body>
Hello, world!
</body>
</html>
然后在ViewController.m的viewDidLoad方法中,添加如下代码:[plain]
view plaincopy- (void)viewDidLoad
{
[super viewDidLoad];
NSString *path = [[NSBundle mainBundle] pathForResource:@"index.html" ofType:nil];
[self.webView loadRequest: [NSURLRequest requestWithURL:[NSURL fileURLWithPath:path]]];
}
然后点击运行,就会看到屏幕上出现了"Hello, world!“了。
2. 在线网页
这种方式,需要在服务器端部署一个页面,这里我们就不用这么复杂了,直接打开百度就可以了。
同样修改ViewController.m的viewDidLoad方法代码:
[plain]
view plaincopy- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
这样就是一个简单的hybrid app啦(噢,为了简单,把其他的导航控件都省掉了,一种比较通用的hybrid app是:上方或下方是导航,使用native方式,内容区使用HTML5,比如网易新闻客户端:http://www.mhtml5.com/2011/07/2200.html)。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。