源码请到Github上下载Github源码。
ios开发的基本知识:OC语言基础、Foundation基础框架、各个控件的UI界面编程(UITableView、UINavigationController、UITabBar、UIButton、UILabel、UIImageView、UIScrollView、UITextField等)、图形图像与动画、多点触摸与手势检测(响应者链、点击手势UITapGestureRecognizer、捏合手势UIPinchGestureRecognizier、旋转手势UIRotationGestureRecognizer、轻扫手势UISwipeGestureRecognizer、拖动手势UIPanGestureRecognizer)、程序的国际化、数据存储与IO、多媒体应用开发、加速度计与陀螺仪使用、多线程编程(NSThread、GCD、NSOperation与NSOperationQueue、线程安全与同步)、iOS 网络编程(XML和JSON解析、AFNetworking、ASIHTTPRequest等)定位于地图(CoreLocation、MapKit)等。
期间经历了在公司三个多月的iOS开发实习,学习了很多iOS 开发的实战经验,帮助开发了某APP的地图定位、骑行轨迹、、骑行数据记录、照片滤镜美化等功能的开发。从八月份起,笔者开始根据自己的一个想法开发一款真正的自己的APP,以深化开发的基础及增加实际的iOS开发经验。
APP的主要功能有三点:
1.美颜相机;2.相册分类管理;3.基于相册分类、用户标签及用户行为的人物画像的社交功能。
APP的设计思路是:
1.首先用户注册时必须上传一张自己的人脸照片,照片的人脸识别使用腾讯优图的优图人脸检测API,并且每个用户设置自己的兴趣标签;
2.其次获取每个用户手机相册里的照片,使用腾讯优图的图片标签识别API,将用户的照片上传至优图服务器,返回用户照片信息进行分类,建立手机照片分类管理工具,并且在APP后台建立云相册,便于用户照片管理与保存;
3.开发自定义的相机,实现美颜等功能;
4.根据用户的信息、标签、照片信息在后台建立用户画像,基于用户的地理位置,推荐位置相近并且画像相似的用户给本用户,方便进一步的社交。
笔者目前的开发过程如下,后期将不断更新:
1.自定义TabBarVC,建立四个Nav及对应的四个rootVC:四个主页面的VC。这里需要对于初次开发者来说,需要注意的就是UITableBarController的每个标签的控制器最好使用UINavigationController,因为如果直接使用UIViewController的话,后面二级之后的页面仍然会有UITableBar在底部,一般的APP不需要这样的功能,当然,比如像知乎就使用了这个功能;还有就是关于状态栏及导航栏的问题。(可参考:导航控制器与标签控制器,状态栏导航栏问题,iOS导航控制器和标签栏控制器的结合)。代码如下:
{
if (!self)
{
self=[super init];
}
SZFaceFriendVC* faceFriendVC=[[SZFaceFriendVC alloc] init];
UINavigationController* faceFriendNav=[[UINavigationController alloc] initWithRootViewController:faceFriendVC];
UITabBarItem* faceFriendItem=[[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"FaceFriend", nil) image:nil tag:0];
faceFriendNav.tabBarItem=faceFriendItem;
faceFriendNav.navigationBar.translucent = NO;
SZPhotoGraphVC* photoGraphVC=[[SZPhotoGraphVC alloc] init];
UINavigationController* photoGraphNav=[[UINavigationController alloc] initWithRootViewController:photoGraphVC];
UITabBarItem* photoGraphItem=[[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"TakePhoto", nil) image:nil tag:0];
photoGraphNav.tabBarItem=photoGraphItem;
photoGraphNav.navigationBar.translucent = NO;
SZAlbumVC* albumVC=[[SZAlbumVC alloc] init];
UINavigationController* albumNav=[[UINavigationController alloc] initWithRootViewController:albumVC];
UITabBarItem* albumItem=[[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"Album", nil) image:nil tag:0];
albumNav.tabBarItem=albumItem;
albumNav.navigationBar.translucent = NO;
SZMeVC* meVC=[[SZMeVC alloc] init];
UINavigationController* meNav=[[UINavigationController alloc] initWithRootViewController:meVC];
UITabBarItem* meItem=[[UITabBarItem alloc] initWithTitle:NSLocalizedString(@"Me", nil) image:nil tag:0];
meNav.tabBarItem=meItem;
meNav.navigationBar.translucent = NO;
// 设置UITabBar背景图片
self.v