• 知识总结


    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进行优化。

    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.左右側滑菜单里分别显示栏目板块和用户详情,能够通过手势切换,也能够通过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,实现打电话/发邮件/发短信等功能

  • 相关阅读:
    移动端页面开发
    全屏滚动-jQuery插件实现
    面向对象技术
    JS堆栈与拷贝
    util 学习
    node.js 中的全局对象
    在webstrorm中配置好es6 babel【更新:在webstorm中配置.vue和.vue文件中支持es6】
    与后台进行连接,mysql模块 第六篇
    在node.js中使用ejs的demo 第五篇
    项目中经常用到的reset.css文件
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7200414.html
Copyright © 2020-2023  润新知