姿势总结

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中的编辑模板按钮。 
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进行优化。http://pizi.me/66

刷新控件 
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.左右侧滑菜单里分别显示栏目板块和用户详情,可以通过手势切换,也可以通过按钮点击切换

提示窗 
1.利用MBProgressHUD框架封装的UIAlertView完成加载过程中等待响应的蒙板效果。 
2.使用SVProgressHUD来创建登录或者下载等操作时候的提醒框;

画中画 
弹出菜单使用 UIPresentationController 实现弹出遮盖,自定义CATrasition转场动画实现弹出、消失动作。

图片浏览器 
通过UICollectionView和转场动画实现图片浏览器。

网页展示 
1.使用UIWebView控件加载从服务器中获得的新闻数据对新闻详情页进行展示。 
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将服务器发送回来的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+服务器时间)hmac 时间戳的解决方案,保证账户安全性和实时性。 
2. 使用sskeychain保存钥匙串。

下载 
下载进度:使用NSURLConnection的代理监听,获取下载的数据段,并实现下载进度跟进,使用异步下载 
断点续传:使用head请求检查服务器段文件大小,使用NSFileManager获取本地文件大小设置为http请求头的range字段,进行网络请求

文件上传 
1.使用NSURLConnection进行POST请求使用multipart/form-data文件类型拼接mimeType实现文件上传功能(文件大小限定2M) 
2.使用NSURLSession进行PUT请求结合WebDAV服务器实现大文件上传功能

数据存储 
1.使⽤FMDB框架实现书库数据缓存,减轻服务器频繁被访问的压力和减少用户数据流量的浪费,提高用户体验 
2.使用NSUserDefaults保存用户配置信息,如自动登录,账户信息等 
3.使用FMDB第三方数据库框架实现SQLite数据库管理 
4.模仿SDWebimage对获取的红包图片转化成NSData类型二进制数据写入沙盒进行归档,本地保存图片,生成下载url的md5作为图片查找key以保证唯一性 
5.使用NSFileManager对磁盘缓存进行管理,使用替换路径方式清理磁盘缓存 
6.使用 FMDB 完成数据持久化功能,结合图片缓存,提升用户体验 
7.SDWebImage 实现图片的异步下载与缓存,内存缓存以及磁盘缓存,提升用户断开连接时的用户体验,程序进入后台自动清理 
8.抽取用户行为,自定义用户模型对象,利用归档保存用户信息 
9.用户登录信息存入沙盒,可以自动登录和记住密码 
10.编写专门的数据处理工具类,利用NSCoding实现模型数据的存储和读取 
11.利用SDWebImage实现图片异步下载、图片缓存、防止图片重复下载、图片缓存清理等 
12.利用SQlite3实现收藏、最近浏览的数据本地缓存 
13.用SQlite3实现本地数据缓存,提升客户端与服务器之间的通讯性能 
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事件匹配解锁按钮frame区域,实现手势解锁功能

文件管理 
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,实现打电话/发邮件/发短信等功能

你可能感兴趣的:(笔记,MD)