学习了UI这么久了,自己试手了一个项目汉语字典
,找到接口和切图之后就上手了。这里总结一下这个项目。
整个app的设计。
其实这不是我设计的,不是我设计的,不是我设计的。重要的事情要讲三次。因为这个应用其实是一个成品,我也只是用来练手的。不过没所谓啦,仅仅练手。因为可以下载到成品,所以我也是按照来做了。它整个主要功能就是查字啦。可以直接搜索,可以按照拼音,可以按照部首。三个方面检索,最终进入一个页面,具体介绍这个字。拼音和部首检索中间多一个UITableVIew来展示。还有一个其他的页面,像关于
,介绍
等等无关紧要的页面(因为都是我一个人看的。。。)。因为是一个新手,也不能谈什么框架等高深的东西,只能谈谈细节的东西了。
做了这个app,感觉最麻烦的就是UI的了(不过也没什么好烦的了)。不是困难,只是麻烦,不过该做的也要做了。这个UI的布置主要的适配的问题了。i5,i6,i6p都还好,不过i4s是怎么回事,一个3:2的屏幕,一个在i6上搭建的优美UI怎么到了i4s就变得那么穷矮挫呢?
UI设计,这个汉语字典是一个成品app,我是对应来做的,看到原型图之后大概想到,一个导航控制器,里面视图,点击搜索或者进去以后进去一个UITableViewController,里面存放这数据,数据库还得自己建。。。不过还好也挺简单的。自己建好数据库以后就按照顺序做下去了。先来说说这个页面布局。我看了之后决定把他分成三块,上面的一个是SegmentedController和UITextView一块,占屏幕的一部分,中间的最近搜索占一部分,最下面的检索部分占一部分。感觉这样的布局能够适配好四种屏幕,不会显得特别丑。
在一开始的时候是每个控件都是按照屏幕来百分比缩放,间距固定,固定好后才发现,在i4s的时候,我的天,下面的检索最后一行剩下一半了。这3:2。。。。
不知道以后会怎么布局,对于一个菜鸟来说感觉就这样吧。
点击拼音或者是按照部首检索之后进去是一个UITableView,里面的数据是用用的是sqlite数据库。主要操作代码如下
+(NSArray*)find
{
NSMutableArray *array=[NSMutableArray array];
//将导入的数据库移动到Documents文件夹下
NSString *originPath = [[NSBundle mainBundle] pathForResource:@"Pinyin" ofType:@"sqlite"];
NSString *targetPath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"pinyin.sqlite"];
NSFileManager *manager = [NSFileManager defaultManager];
if (![manager fileExistsAtPath:targetPath]) {
[manager moveItemAtPath:originPath toPath:targetPath error:nil];
}
char *filename = (char *)[targetPath UTF8String];
//打开数据库
sqlite3 *db;
sqlite3_open(filename, &db);
//操作数据库
//声明一个陈述
sqlite3_stmt *stmt = nil;
//sql语句
const char *sql = "select * from ol_pinyins";
int result = sqlite3_prepare_v2(db, sql, -1, &stmt, nil);
if (result == SQLITE_OK) {
while (sqlite3_step(stmt) == SQLITE_ROW) {
//提取数据
const char *Id = (const char *)sqlite3_column_text(stmt, 0);
const char *title = (const char *)sqlite3_column_text(stmt, 1);
AlphabelModel *m = [[AlphabelModel alloc] init];
m.Id=[NSNumber numberWithInt:[[NSString stringWithCString:Id encoding:4] intValue] ];
m.pinyin = [NSString stringWithCString:title encoding:4] ;
[array addObject:m];
}
} return array;
}
然后根据拼音使用接口读取出来,自己对json数据据进行解析。后来才发现有第三方类库。。。自己做一下总是好的。嗯。
网络是用AFNetWorking类库,十分好用,虽然我还没深入。具体实现代码如下:
+(void)netWorkWithPath:(NSString *)path Parmars:(NSDictionary *)parmars CallBack:(CallBack)callback
{
path = [DomainString stringByAppendingString:path];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *dict = @{@"format": @"json"};
[manager GET:path parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
callback(responseObject,SuccessType);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:error.debugDescription,@"info", nil];
callback(info,FailedType);
}];
}
还有一些分享的,比如微信啊,QQ啊等等。第一次用微信分享那些。因为是第一次用,所以那些环境配置只要根据它上面的步骤慢慢来设计,配置,就好了~~才怪。。。中间遇到的环境配置问题不断的百度,寻找错误。最终才搞定,也算是经验了。不过到了最后才发现可以通过cocoapods导入。才发现cocoapods真的好强大。真心方便。
整个项目的目录如下
整个项目开发遵循MVC模式。