UI
主框架
1.利用UIScrollView+自己定义UITbaleViewCell+UICollectionView进行主界面框架的搭建。
2.创建UINavigationController基类。各功能模块导航控制器继承基类实现特有功能,在基类中对样式做统一更改。优化代码结构。
3.主架构採用UITabBarController+多UINavigationController的复合结构设计。
4.UITabBarController + UINavigationController 的主架构设计。摒弃抽屉效果提升用户体验、个性化的下拉刷新以及 UITableHeaderView,个性化的首页UITableView
5.使用多StoryBorad模式(故事版相应模块)进行总体架构设计。在方便后期屏幕适配同一时候有利团队并行分散开发
6.自己定义tabbar控制器做UIWindow的根控制器。每一个子模块的控制器为导航控制器
7.主控制器是自己定义 TabBar 。实现不同页面之间的切换。主要结构是产品搜索展示和我的功能
8.利用Storyboard+Autolayout、xib实现界面的高速开发
9.引入了AFNetWorking,SDWebImage,iOS-Slide-Menu等框架
新特性
1.使用UICollectionView实现新特性界面,利用3个Cell进行复用可实现N多张图片的展示,进行图片循环轮播
分类筛选
标签栏
1.自己定义TabBar加入到系统控件。使用自己定义UIButton巧妙的加入TabBar中的编辑模板button。
2.在栏目板块通过两个tableViewController实现数据互联
列表展示
1.使⽤UITableView,UICollectionView组合实现商品分类展⽰,使用户能有更好购物体验
2.使用Xib封装⾃定义TableViewCell、CollectionViewCell,更好的展示单个记录
3.使⽤UITableView与⾃定义的UITableViewCell展示装修公司的简单信息
4.使用UICollectionView及自己定义cell展⽰装修案例的一些效果图⽚
5.自己定义UITableViewCell显示文章标题与简单介绍,使用SDWebImage开源框架对图片进行缓存。
6.封装了cell的Frame模型,使设置cell的Frame更加方便。
7.利用赋值和计算布局分离、核心画图异步绘制cell、高速滑动图片过滤等对tableview列表进行性能调优 http://www.cocoachina.com/ios/20150602/11968.html
8.利用UICollectionView实现音乐播放界面的流水布局效果
9.主页面由tableView展示。自己定义两种cell。分别用来载入有图和无图帖子
10.UITableview的自己主动布局处理(与Container View的结合)
11.在自己定义的UICollectionCell中显示旅游的图片和文字数据
12.用UIScorllView实现频道的选择栏视图、label的变化
13.自己定义UIScrollview实现各频道的切换
14.依据获取的数据来自己定义不同的UICollectionviewcell,如单图、多图、大图的新闻
15.直播间用户发表言论自己定义UITableviewcell,依据文本内容动态计算每一个cell的frame
自己定义行高
1.自己定义Cell,因为无法获取微博中图片的高度,首先利用SDWebImage讲图面下载下来,在使用cell的时候依据图片的张数,对图片进行排版,使用约束来控制cell的高度。计算返回行高。
2.利用NSCache来缓存行高。来对tableView进行优化。
刷新控件
1.使用第三方框架MJRefresh用Scrollview代理监听滚动视图的contentoffset,使用UIView的Block动画改变UITableview的contentInset实现数据上拉载入,下拉刷新效果;
2.自己定义刷新控件。用KVO来监听UIRefreshControl的view的frame来实现响应的动画
瀑布流
1.使用UICollectionView的自己定义布局,并自己定义UICollectionViewCell以及Cell的自适应高度,完毕美食列表展示的瀑布流效果。显示美食图库;
2.自己定义UICollectionViewCell,採用流水布局实现Cell的九宫格展示;
轮播图
自己定义UIScrollView配合UIPagecontrol监听完毕分页功能。使用NSTimer实现图片轮播效果。
抽屉效果
1.利用View的移动和拖拽事件(pan拖拽,tap点击)实现抽屉效果进行側滑菜单的开发。
2.側滑效果展示主界面以及自己定义TabBar。
3.自己定义抽屉效果的TarBar控制器,使用块动画、手势效果优化UI效果;
4.左右側滑菜单里分别显示栏目板块和用户详情,能够通过手势切换,也能够通过button点击切换
提示窗
1.利用MBProgressHUD框架封装的UIAlertView完毕载入过程中等待响应的蒙板效果。
2.使用SVProgressHUD来创建登录或者下载等操作时候的提醒框;
画中画
弹出菜单使用 UIPresentationController 实现弹出遮盖。自己定义CATrasition转场动画实现弹出、消失动作。
图片浏览器
通过UICollectionView和转场动画实现图片浏览器。
网页展示
1.使用UIWebView控件载入从server中获得的新闻数据对新闻详情页进行展示。
2.使用WebView调用JS语句实现对网页内容字号大小的调整
3.使用WebView载入html新闻内容。採用oc&js互调放大展示图片/打开相机/打开系统相冊等
事件监听
1.使用hitTest和pointInside监听不规则控件的事件响应,实现点击人体不同部位选择相应病理分类的功能。
轨迹跟踪
1.通过UIEvent的事件监听实现对触摸事件的轨迹跟踪,实现涂鸦功能/实现栏目控件的拖动效果
2.使用手势识别功能加入特殊手势,双指滑动放大缩小文本内容
3.使用UIGesturRecognizer手势识别,实现文件回收站效果,拖拽文件到回收站并删除指定文件
多控制器管理
1.使用modal(模态)窗体的形式管理视图,展示状态编辑界面。收集用户输入信息
2.使用自己定义转场动画实现多控制器之间的跳转功能
3.自己定义转场modal出视图控制器
布局
1.使⽤AutoLayout实现布局控件,设置自己定义中cell的控件之间的位置
2.使⽤AutoLayout布局设置,适配iOS6〜iOS8,以及常⽤用⼯具类和宏的封装等。
3.使用Masonry以代码形式实现全局控件自己主动布局
4.使用FFAutoLayout进行自己主动布局
动画效果
1.使用核心动画CABasicAnimation设置转盘transform的rotation属性实现幸运转盘功能
2.使用CoreAnimation核心动画制作华丽的翻页效果,保证效率的同一时候提高了用户体验;
3.利用KVO监听界面位置的变化,实现顶部导航栏的淡入淡出效果
4.利用动画来实现抽奖活动转盘抽奖
5.使用UIImageView实现开奖帧动画,并对内存进行优化
进度条:使用KVO监听下载进度属性。自己定义View重写drawRect方法,setNeedsDisplay实时重绘
雪花效果(刷帧动画):使用CADisplayLink刷帧实时重绘,重写drawRect方法渲染UIImage
时钟动画: 对视图加入CALayer,并调整指针视图锚点,使用定时器CADisplayLink并匹配当前时间设置指针视图的transform转动完毕时钟动画
心跳动画:使用CABasicAnimation基础动画设置红心视图的layer的transform.scale,实现心跳效果
图片抖动:使用CAKeyframeAnimation关键帧动画切换layer的transform.rotation属性,实现图片抖动效果
翻页动画:为UIImageView加入手势识别,监听事件又一次赋值数据并执行CATrasition动画实现翻页/淡入淡出/Push/水滴/立方体翻转效果
全景展示
监听视图的UITouch事件。依据touchMoved方法取得偏移量关联沙盒角度图片实现车辆的360度全景展示
http://code4app.com/ios/360-Degrees-Image-Sequence/4fb090c56803fa2563000001#
iPad
1.使用UIPopoverController弹出菜谱搜索与选择界面。
2.使用UIPickview实现网站选择功能
网络
1.使用第三方框架AFNetWorking实现网络数据交互的异步请求。
2.对AFNetWorking中的AFHTTPSessionManager封装成工具类,实现管理所有的数据訪问,减少了项⺫与第三方框架的耦合度
3.使用MJExtension将server发送回来的Json格式的数据封装成对象,在载入图片时,使用SDWebImage实现图片缓存。
4.设计请求工具类来封装AFN框架发网络,以实现请求业务以实现项目分层管理。
5.网络交互採用json数据格式。并使用NSJSONSerialization/SBJson/Jsonkit进行json数据解析。
7.使用系统Reachability框架监測网络情况,配合NSOperation控制线程数进行节电处理。
8.使用SDWebImage异步下载商品图⽚并进行内存和硬盘缓存。
9.使用AFN实现网络请求数据,以及数据解析。提高编程效率。
10.使用第三方框架AFNetworking处理网络数据訪问。用Block封装,实现异步处理网络请求并对错误信息进行处理
11.使用AFN单例来管理全局的数据请求,NSURLCache做网络请求缓存
12.json解析数据,展示论坛内容。用户能够通过订阅不同内容,来进行展示
13.使用AFNNetworking封装网络请求工具类,进而能够使用全局网络訪问单例处理应用中的所有网络传输数据
14.使用AFNNetworking第三方框架封装网络工具类,将框架和工具分离,减少项目对框架的依赖
自己主动刷新
1.开启异步线程Runloop使用定时器定期拉取网络数据源,改动数据源自己主动刷新列表数据
2.使用KVO监听数据源变化,实时调整显示新信息数据的badgeNumber
注冊登录
1.高速注冊採用的是集成第三方SSMSDK发送验证码到注冊手机上进行注冊;
2.使用Post网络请求进行数据上传,实现登录和数据信息公布;
第三方登录
1.使用ShareSDK集成第三方登录模块完毕微博、微信、QQ等SSO单点登录授权
2.使用OAuth2认证完毕用户登录。使用UIWebView截取网页重定向数据截取token,完毕SSO授权
3.通过腾讯和新浪的SSO授权,实现微信、微信、QQ第三方登陆功能。
加密
1.用户登录注冊使用 ((pwd+key)hmac+server时间)hmac 时间戳的解决方式。保证账户安全性和实时性。
2. 使用sskeychain保存钥匙串。
下载
下载进度:使用NSURLConnection的代理监听,获取下载的数据段,并实现下载进度跟进。使用异步下载
断点续传:使用head请求检查server段文件大小,使用NSFileManager获取本地文件大小设置为http请求头的range字段,进行网络请求
文件上传
1.使用NSURLConnection进行POST请求使用multipart/form-data文件类型拼接mimeType实现文件上传功能(文件大小限定2M)
2.使用NSURLSession进行PUT请求结合WebDAVserver实现大文件上传功能
数据存储
1.使⽤FMDB框架实现书库数据缓存,减轻server频繁被訪问的压力和减少用户数据流量的浪费。提高用户体验
2.使用NSUserDefaults保存用户配置信息,如自己主动登录。账户信息等
3.使用FMDB第三方数据库框架实现SQLite数据库管理
4.模仿SDWebimage对获取的红包图片转化成NSData类型二进制数据写入沙盒进行归档,本地保存图片,生成下载url的md5作为图片查找key以保证唯一性
5.使用NSFileManager对磁盘缓存进行管理,使用替换路径方式清理磁盘缓存
6.使用 FMDB 完毕数据持久化功能,结合图片缓存,提升用户体验
7.SDWebImage 实现图片的异步下载与缓存,内存缓存以及磁盘缓存。提升用户断开连接时的用户体验。程序进入后台自己主动清理
8.抽取用户行为。自己定义用户模型对象,利用归档保存用户信息
9.用户登录信息存入沙盒,能够自己主动登录和记住password
10.编写专门的数据处理工具类。利用NSCoding实现模型数据的存储和读取
11.利用SDWebImage实现图片异步下载、图片缓存、防止图片反复下载、图片缓存清理等
12.利用SQlite3实现收藏、近期浏览的数据本地缓存
13.用SQlite3实现本地数据缓存。提升client与server之间的通讯性能
14.採用CoreData作为应用的数据库技术,更好的管理数据库訪问性能和关联表的更新
设计模式
1.对标签页进行共性的抽取并封装成对象,将一些共性的方法比方初始化界面,载入数据等操作封装到工具类中,提高了程序的扩展性。
2.使用GCD实现单例模式封装用户登录模块。
3.严格遵循MVC设计模式开发,减少各个模块的耦合度。
4.对封装框架创建Category,按功能分布式管理核心类,使用runtime机制动态关联对象。给对象加入属性
5.使用MVC模式。分工处理各功能模块;
6.使用消息机制、代理和BLOCK来实现各界面之间跳转时数据的传递。
数据传递
1.使用NSNotificationCenter进行多控制器消息通知,实现消息列表及消息详情等多界面监听新消息提醒。
2.使用Protocol对通讯录列表页和编辑页进行代理模式消息传递,减少应用耦合度,提高模块复用。
3.通过MJExtension使用runtime机制动态载入模型数据,使开发更有效率。
4.利用Block对AFN的GET/POST数据请求进行封装。保证消息响应代码的高度集中。
5.自己定义cell创建Block属性。利用策略模式封装cell响应的详细表现。
6.通过 Runtime 动态获取属性列表,替代字典转模型工具 JSONModal, 是代码更加轻量高效
7.使用runtime机制动态获取属性列表的技术。高速有效完毕字典转模型、对象归解档操作。
8.使用通知来实现登录、欢迎、未登录界面的切换
9.利用Runtime执行时机制,优化字典数据转模型数据的速度
10.贯彻MVC设计模式,大量使用字典转模型进行数据载入和建模
11.MVC设计模式开发。面向接口、模型开发。实现彻底封装,最低耦合度。
12.给NSObject加入分类,利用Runtime机制动态获取类的属性列表关联到模型数据中
有用技术
数据统计&社会化分享
1.使用UmengSDK完毕应用数据统计,实时监控各栏目的用户需求,并集成分享模块实现一键社会化分享功能。
2.通过友盟分享。让用户把在我们APP看到的信息分享到他的新浪微博、微信朋友圈。
远程推送
使用JPush激光推送集成APNS实现远程通知功能。定期为用户推荐最新商户信息。
相机
使用系统相机API设置UIImagePicker控制器。调用系统相机App和系统相冊,实现拍照和相冊读取功能。
截屏/截图
使用UIKit的Core Graphics(核心画图)api截取window范围内容,生成图片并保存到相冊中。
支付
使用单例封装UPPay和AliPay框架,接入银联和支付宝两大主流支付方式,打通应用支付环节。
地图定位
1.使用BMapKit框架,利用百度地图API实现移动导航功能。
2.使用CoreLocation实现地图定位并捕获地理信息。使用MapKit实现大头针功能,标记地址位置和行车路线。
3.利用高德地图开放API进行定位和周边团购数据查找。
4.使用Mapkit、CLLocation、自己定义MKAnnotation View实现地图上标识地铁出入站口位置/显示商家信息
5.使用UIScrollview展示线路图。支持手势缩放查看
二维码
1.使用AVFoundation捕获摄像头输出的二维码相应的URL并进行载入来实现二维码扫描
2.使用CIFilter滤镜设置二维码类型和相应信息生成二维码名片
搜索
1.使用科大语音讯飞API集成语音识别功能,将语音转为文本并通过谓词过滤实现语音搜索功能。查找病人病历
http://code4app.com/ios/%E8%AE%AF%E9%A3%9E%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB/53514bb1933bf0914a8b52d9
2.基于正則表達式的搜索功能
3.首个页面“搜菜谱”随机载入一组数据通过弹跳方式展示在页面上,用户点击就能够自己主动进行搜索,或者输入所要搜索的内容,手动点击搜索。
4.使用PinYin4Objc获取可选栏目的拼音字符串并保存到模型。使用NSPredicate谓词过滤匹配用户输入的拼音结果实现拼音搜索功能
图文混排
1.优化写日记功能,支持加入多张图片、图文混排编辑。
2.使用NSAttributedString的附件属性attachment加入自己定义图片。实现图文混排。
3.设置表情键盘。在数据模型中实现图文混排
源码管理
使用CocoaPods来管理各第三方框架。
图片水印
1.假水印:新闻图片使用核心画图重写UIView的drawRect方法,画字符串到UIView中
2.真水印:利用Quartz2D开启一个基于位图的图形上下文,将原图和水印图都画入并生成新图片
手势解锁
通过监听手势识别UITouch事件匹配解锁buttonframe区域,实现手势解锁功能
文件管理
1.使用SSZipArchive框架实现对Zip文件的压缩和解压缩操作,节省磁盘控件
播放视频
1.全屏:使用Mediaplayer类库播放本地视频。并调用视频截图方法接收通知消息截取截屏信息
2.窗体:使用AVPlayer实现视频播放功能,并通过设置其layer实现窗体播放。及视频放大缩小功能。
http://code4app.com/search/%E8%A7%86%E9%A2%91/0
3.流媒体:使用MPMoviePlayer载入m3u8格式视频。实现流媒体播放
ffmpeg 支持mms、rtsp等协议的流媒体
http://code4app.com/ios/%E6%B5%81%E5%AA%92%E4%BD%93%E6%92%AD%E6%94%BE%E5%99%A8/538ed7f4933bf0f1168b519a
音频音效
音效:使用AudioServices类库实现iOS音效播放功能
本地音乐:使用AVAudioPlayer类库实现iOS平台的本地音乐播放
流媒体音乐:
1.使用AFN下载流媒体数据拼接NSData,使用AVAudioPlayer播放二进制数据 (不稳定)
2.使用AVPlayer载入URL实现流媒体音乐播放功能(无法拿到数据)
3.使用第三方库DOUAudioStreamer/Vitamio-online实现流媒体音乐播放
国际化
加入多项InfoPlist.strings配置文件相应不同语言。使用NSLocalizedString配置不同版本号内容 http://www.cocoachina.com/industry/20140526/8554.html
应用跳转
1.使用openurl载入指定应用的scheme,实现应用推荐/支付宝跳转/第三方登录授权后返回应用的应用间跳转功能
2.使用openurl调用系统电话APP/邮件APP/短信APP,实现打电话/发邮件/发短信等功能