移动客户端

iOS开发框架CollectioniOS

2020-02-11  本文已影响0人  YoungManSter

CollectioniOS聚合了项目搭建的一些基本模块,节约开发者时间,协助项目的快速搭建,能够满足一个项目的基本实现。

github地址:https://github.com/usernameyangyan/CollectioniOS

框架的引入

更新说明

v1.1.3

1.解决Toast连续点击时多个Toast同时显示
2.解决库中的默认图片显示不出来问题

v1.0.9

1.增加DataManager,对Http数据请求、UserDefaults、File、SQLite的整合使用,移除YYHttpUtils
2.增加YYTagView
3.增加MVP

v1.0.8(增加以下功能)

1.应用基本配置:应用内国际化语言配置、应用名称国际化。
2.UTTableView/UICollectionView的封装以及通用用法。
3.YYNavigationBar:顶部导航栏的封装以及使用。
4.YYAutoLayout:自动布局的使用。
5.YYTabBar:底部分页导航栏的封装以及使用。
6.YYPageView的封装以及使用。
7.YYPageMenu:滑动菜单的封装以及使用。
8.YYRefresh:下拉刷新/上拉加载更多控件的封装以及使用。
9.YYImageLoader:网络图片加载(可加载普通网络图片、gif,可设置缓存时间、缓存大小)。
10.YYDialog:通用提示框的封装、Toast的封装
11.YYHttpUtils:网络请求的封装(普通的网络请求、文件下载、图片上传)
12.YYDataShowView:数据加载显示样式(没有数据、网络错误、正在加载)

注意:由于项目的网络请求是使用了http,在使用之前需要配置项目Info.plist,在其中加上App Transport Security Settings->Allow Arbitrary Loads(设置为YES)

项目介绍

整体效果

文章目录

1.应用基本配置

2.UTTableView的封装使用

3.UICollectionView/UIScrollView的基础使用

4.YYNavigationBar:顶部导航栏

5.YYAutoLayout:自动布局

6.YYTabBar:底部分页导航栏

7.YYPageView:图片轮播

8.YYPageMenu:滑动菜单

9.YYRefresh:下拉刷新/上拉加载更多

10.YYImageLoader:网络图片加载

11.YYDialog:通用提示框

12.DataManager的使用(Http、UserDefaults、File、SQLite)

13.YYDataShowView:数据加载显示页面

14. YYTagView

15. MVP

16.通用工具类

具体使用

一、应用基本配置

1.应用内国际化语言配置
实现流程:
1.在项目创建一个Strings File 命名为 Localizable.strings
2.选择Localizable.strings文件 点击localizaiton,选择所需语种
3.其中第2点显示的语种如果没有所需的可以点击项目->PROJECT下面的文件->info->找到Localizations添加
4.使用InternationalUtils类进行内容获取和系统语言切换:
  (1)在AppDelegate中通过InternationalUtils.getInstance.initUserLanguage()进行初始化
  (2)通过InternationalUtils.getInstance.getString(name)获取Localizable.string字符串对应的内容       
  (3)通过InternationalUtils.getInstance.setLanguage(LanguageType,rootViewController)进行语言切换,其中注意的是需要传入根Controller
  (4)通过InternationalUtils.getCurrentLanguage()获取当前语言
2.应用名称国际化
(1)创建Strings File文件,并命名为InfoPlist.strings
(2)选中创建好的文件,点击右侧Localize,勾选所需语言
(3)配置InfoPlist.strings:CFBundleDisplayName = 

二、UTTableView的封装使用

1.YYTableViewManager使用
属性 作用
register(_ nibClass: AnyClass, _ item: AnyClass, _ bundle: Bundle = Bundle.main 注册YYTabViewCell和YYTabViewItem
numberOfSections(in _: UITableView) 当前Section的下标
numberOfSections(in _: UITableView) 当前Section的下标
add(section: YYTableViewSection) 增加Section头部视图
remove(section: Any) 移除Section头部视图
removeAllSections() 移除所有Section头部视图
reloadData() 重新加载UITabView数据
属性 作用
headerHeight 头部视图高度
footerHeight 尾部视图高度
init() 使用默认的头部视图,如果不设定头部任何参数就默认是不显示的
init(headerView: UIView!) 增加自定义头部视图
init(footerView: UIView?) 增加自定义尾部视图
init(headerView: UIView?, footerView: UIView?) 增加自定义头部视图和尾部视图
add(item: YYTableViewItem) 增加头视图下面的item
remove(item: YYTableViewItem) 移除头部视图下面的item
removeAllItems() 移除头视图下面的所有item
replaceItemsFrom(array: [YYTableViewItem]!) 替换头部视图下面的所有item
insert(_ item: YYTableViewItem!, afterItem: YYTableViewItem, animate: UITableView.RowAnimation = .automatic) 在某个item后面插入新的item
insert(_ items: [YYTableViewItem], afterItem: YYTableViewItem, animate: UITableView.RowAnimation = .automatic) 在某个item后面插入item数组
delete(_ itemsToDelete: [YYTableViewItem], animate: UITableView.RowAnimation = .automatic) 删除头部视图中某个item
reload(_ animation: UITableView.RowAnimation) 重新加载Section组下的数据
属性 作用
item 在register时和Cell绑定的YYTableItem,主要是数据的传递
cellWillAppear() Cell显示的时候会调用这个回调
cellDidDisappear() Cell消失时会调用这个回调
setSelected() Cell设置选择状态
属性 作用
tableViewManager 绑定的YYTableViewManager
section 绑定的YYTableViewSection
cellTitle 设定默认Cell标题的字段
cellHeight Cell的高度
cellStyle Cell的样式
func setSelectionHandler(selectHandler: YYTableViewItemBlock?) Item的点击事件回调
setDeletionHandler(deletionHandler: YYTableViewItemBlock?) Item的删除事件回调
separatorInset 分割线内边距
editingStyle Item的编辑状态
isHideSeparator Item是否隐藏分割线
separatorLeftMargin 分割线外边距
indexPath Item的下标
reload(_ animation: UITableView.RowAnimation) Item数据重新加载
delete(_ animation: UITableView.RowAnimation = .automatic) Item数据的删除
updateHeight() 更新高度
autoHeight() 自动计算高度

三、UICollectionView/UIScrollView的基础使用

1. UICollectionView的快速使用
属性 作用
init(lineSpacing: CGFloat, columnSpacing: CGFloat, sectionInsets: UIEdgeInsets) 布局初始化,可设置行间距、列间距、外框边距
属性 作用
columnOfLayout(_ collectionView: UICollectionView) 设置UICollectionView的列数
itemHeight(_ collectionView: UICollectionView, layout commonCollectionViewLayout: CommonCollectionViewLayout, heightForItemAt indexPath: IndexPath) 设置item的高度
使用步骤
2. UICollectionView/UIScrollView增加可伸缩头部

请参照上面UITableView的用法

四、YYNavigationBar:顶部导航栏

1.YYNavigationBar基本属性
属性 作用
setHidden(...) 隐藏NavigationBar
setAlpha(...) 设置NavigationBar的透明度
setBarBackgroundColor(...) 设置NavigationBar的背景颜色
setTitleColor(...) 设置NavigationBar的标题颜色
setTitleSize(...) 设置NavigationBar的标题大小
setShadowImage(...) 设置NavigationBar的阴影图片
setShadowHidden(...) 设置NavigationBar的阴影是否隐藏
setShadow(...) 设置NavigationBar的阴影
setTitleTextAttributes(...) 设置NavigationBar的标题的Attributes
setTranslucent(...) 设置NavigationBar是否透明
setBarStyle(...) 设置NavigationBar是样式
setBackgroundImage(...) 设置NavigationBar背景图片,如果设置图片会覆盖背景颜色
setTitle(...) 设置NavigationBar标题
setBackBarButtonItem(...) 设置NavigationBar返回Item
setBackBarButtonItem(...) 设置NavigationBar返回Item
setLeftButtonItem(...) 设置NavigationBar左边菜单Item
setLeftButtonItems(...) 设置NavigationBar左边菜单Item
setRightButtonItem(...) 设置NavigationBar右边菜单Item
setRightButtonItems(...) 设置NavigationBar左边菜单Item数组
2.YYNavigationBar全局设置Configuration
属性 作用
isHidden 隐藏NavigationBar
alpha NavigationBar的透明度
tintColor NavigationBar的标题颜色
shadowImage 设置NavigationBar的阴影图片
isShadowHidden 隐藏NavigationBar的阴影
titleTextAttributes NavigationBar的Attributes
isTranslucent 设置NavigationBar透明
setBackgroundImage 设置NavigationBar的背景图片
3.链式使用
NavigationUtils
        .with(controller: self)
        .setBarBackgroundColor(barTintColor: UIColor.red)
        .setTitle(title: InternationalUtils.getInstance.getString("nav_use"))
        .setBackBarButtonItem(style: .image(UIImage(named: "back_btn")),tintColor: UIColor.gray)
        .build(

五、YYAutoLayout:自动布局

链式使用
centerLabel
        .centerX(equalTo: view.yy_centerX)
        .centerY(equalTo: view.yy_centerY)
        .width(80)
        .height(40)
        .build()

六、YYTabBar:底部分页导航栏

1.TabBarBasicParamBuilder基本属性
属性 作用
with(...) TabBarBasicParamBuilder的初始方法,可设置TabBar的图片、标题
defultStyle() 获取默认样式设置,下面属性归属defaultStyle()
setTextColor(...) 设置未选择标题的颜色
setSelectTextColor(...) 设置选择标题的颜色
setImgColor(...) 设置未选择图片颜色
setSelectImgColor(...) 设置选择图片颜色
bouncesAnimationStyle() 设置弹簧动画
setRemindUseClickIndex(...) 设置用户提醒点击下标
irregularity() 不规则TabBarItem显示,归属defultStyle(),下面属性归属irregularity()
setIrregularityIndex(...) 设置不规则TabBarItem下标
setIrregularityBorderColor(...) 设置不规则图标BorderColor
setIrregularityBorderWidth(...) 设置不规则TabBarItem外框宽度
setIrregularityBackgroundColor(...) 设置不规则TabBarItem背景颜色
retunDefaultStyle() 返回defuletStyle
backgroundColorWithoutTitlesAnimationStyle() 设置TarBarItem背景颜色不带title,归属defultStyle(),下面属性归属backgroundColorWithoutTitlesAnimationStyle()
irregularity() 不规则TabBarItem显示,归属defultStyle(),下面属性归属irregularity()
setItemBgColor(...) 设置未选择TabBarItem背景颜色
setSelectItemBgColor(...) 设置选择TabBarItem背景颜色
retunDefaultStyle() 返回defuletStyle
cumstomStyle() 获取自定义样式设置,下面属性归属cumstomStyle()
setCumstonTabBarItemView(...) 设置自定义TarBarItem数组
2.TabBarSetting基本属性
属性 作用
init(...) 根据TabBarBasicParamBuilder初始化TabBarItem
setTabBarBackgroundColor(...) 设置TarBar背景颜色
setTabBarBackgroundImage(...) 设置TarBar背景图片
setShouldHijackHandler(...) 设置TarBarItem点击回调,返回true代表拦截自行处理,false代表不进行拦截处理
setDidHijackhHandler(...) 点击回调处理
setDefaultTabIndex(...) 设置默认选择下标
setTabBarBadgeValue(...) 设置某个TarBarItem的消息气泡内容
hideTabBadgeValue(...) 隐藏某个TarBarItem的消息气泡
setTabBarBadgeValueColor(...) 设置某个TarBarItem的消息气泡颜色
3.YYTabBar的使用
两者结合使用需要注意的是如果内容ControllerView按照原来的高度设置底部会被TabBar遮挡,为了解决这个问题需要设置两步
    let chidVC: [UIViewController] = titles.map { _ in
        UIViewController.autoHeight=UIScreen.main.bounds.height - self.tabBar.frame.height
        let vc: CommonWithNavController = CommonWithNavController()
        return vc
    }
    
    
    let builder:TabBarBasicParamBuilder=TabBarBasicParamBuilder
        .with(childVCs: chidVC, normalImgs: normalImgs, selectImgs: selectImgs, titles: titles)
        .defultStyle()
        .build()
    
    
    let _:TabBarSetting=TabBarSetting(vc:self,tabBarBuilder: builder)
1.YYTabBarItemContentView的介绍
属性 作用
insets 设置contentView的偏移
selected 是否被选中
insets 设置contentView的偏移
highlighted 是否处于高亮状态
highlightEnabled 是否支持高亮
textColor 文字颜色
highlightTextColor 高亮时文字颜色
iconColor icon颜色
backdropColor 背景颜色
highlightBackdropColor 高亮时背景颜色
title 标题
badgeValue 消息气泡内容
badgeColor 消息气泡颜色
badgeView 获取消息气泡View
selectAnimation(animated: Bool, completion: (() -> ())?) 设置选择时动画
reselectAnimation(animated: Bool, completion: (() -> ())?) 设置释放时动画
highlightAnimation(animated: Bool, completion: (() -> ())?) 设置高亮时动画
dehighlightAnimation(animated: Bool, completion: (() -> ())?) 设置释放高亮时动画
badgeChangedAnimation(animated: Bool, completion: (() -> ())?) 设置消息动画改变时动画
2.实现YYTabBarItemContentView,自定义相关参数
3.设置自定义TabBarItemView
 let cumstonItemView=[CumstonSettingItemView(),CumstonAnimateWithTipsContentView(),CumstonAnimateWithNumContentView(),CumstonAnimateWithImgContentView(),cumstonRemindItemView]
    
 let builder:TabBarBasicParamBuilder=TabBarBasicParamBuilder
        .with(childVCs: chidVC, normalImgs: normalImgs, selectImgs: selectImgs, titles: titles)
        .cumstomStyle()
        .setCumstonTabBarItemView(cumstomItemView: cumstonItemView)
        .build()
    
 let tab:TabBarSetting=TabBarSetting(vc:self,tabBarBuilder: builder)

七、YYPageView:图片轮播

let pageView:YYPageView={
    let pageView:YYPageView=YYPageView.init(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 300))
    pageView.register(YYDefaltPageViewCell.self, forCellWithReuseIdentifier: "cell")
    pageView.transformer = YYPageViewTransformer(type:.none)
    pageView.pageControl.interitemSpacing=10
    return pageView
}()
//设置轮滚图片的数量
func numberOfItems(in pagerView: YYPageView) -> Int {
    return imageNames.count
}
//每个轮滚内容的设定
func pagerView(_ pagerView: YYPageView, cellForItemAt index: Int) -> UICollectionViewCell {
    let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index) as! YYDefaltPageViewCell
    cell.imageView?.image=UIImage(named:imageNames[index] )
    cell.imageView?.contentMode = .scaleAspectFill
    cell.imageView?.clipsToBounds = true
    cell.textLabel?.text = String.init(format: "第%d张图片", index)
    return cell
}

八、YYPageMenu:滑动菜单

1.YYPageMenu的基本使用(需要特别注意下面注释说明部分)
  let menu = YYPageMenu.init(frame:CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 50),vc: self, titles: titles)
   //设置menu在NavigationBar下面
  PositionSettingUtils.position(aboveView: self.navigation.bar, childView: menu!, style: .adaptive)
  //设置内容View在menu下面
  PositionSettingUtils.position(aboveView: menu!, childView: menu!.page!.view, style: .fixed)
    
  self.view.addSubview(menu!)
    
    //为了解决遮挡问题,需要在初始化内容View之前计算出高度,并且内容View需要实现AutoHeightUIViewController
   let viewControllers: [UIViewController] = self.titles.map { _ in
        UIViewController.autoHeight=menu!.page!.view.frame.height
        let vc: ChildPageViewController = ChildPageViewController(pageMenuVc: self)
        return vc
    }
    //初始化内容View
    menu!.page?.initController(viewControllers: viewControllers)
    var style:YYPageMenuStyle=YYPageMenuStyle()
    style.indicatorColor = .red
    style.indicatorCorner = .corner(value: 3)
    style.indicatorStyle = .line(widthType: .sizeToFit(minWidth: 20), position: .bottom((margin: 1, height: 2)))
    style.titleFont = UIFont.systemFont(ofSize: 18)
    style.selectedTitleColor=UIColor.red
    menu!.style=style
    menu!.backgroundColor=UIColor.yellow
    //menu选择回调
    menu!.page!.didFinishPagingCallBack={
        currentViewController,currentIndex in
        self.menu!.setSelectIndex(index: currentIndex)
    }
2.YYPageMenuStyle的基本属性
属性 作用
indicatorColor 指示器颜色
indicatorStyle 指示器风格,类型为YYPageMenuIndicatorStyle:横线类型,line(widthType: YYPageMenuItemWidthType, position: YYPageMenulinePosition)/覆盖类型,cover(widthType: YYPageMenuItemWidthType)
indicatorCorner 指示器圆角
labelWidthType label 宽度类型 固定宽度 或 随文字适应宽度 ,类型主要为YYPageMenuItemWidthType:铺满,fixed(width: CGFloat)/自适应,sizeToFit(minWidth: CGFloat)
titleFont 标题字体
normalTitleColor normalTitleColor
selectedTitleColor 选中标题颜色
iconColor icon颜色
backdropColor 背景颜色
highlightBackdropColor 高亮时背景颜色
title 标题
badgeValue 消息气泡内容
badgeColor 消息气泡颜色

九、YYRefresh:下拉刷新/上拉加载更多

属性 作用
YYDefaultRefreshHeaderAnimator
pullToRefreshDescription 刷新提示文本
releaseToRefreshDescription 释放提示文本
loadingDescription 正在加载提示文本
YDefaultRefreshFooterAnimator
loadingMoreDescription 上拉加载提示文本
noMoreDataDescription 没有数据提示文本
loadingDescription 正在加载提示文本
方法 作用
addPullToRefreshListener(animator: YYRefreshProtocol & YYRefreshAnimatorProtocol, handler: @escaping YYRefreshHandler,aboveView:UIView,childView:UIView) 添加下拉刷新样式、刷新回调、以及在某个控件下面
addLoadMoreListener(animator: YYRefreshProtocol & YYRefreshAnimatorProtocol, handler: @escaping YYRefreshHandler) 添加上拉加载更多样式、刷新回调
removeRefreshHeader() 移除下拉刷新控件
removeRefreshFooter() 移除上拉刷新控件
startPullToRefresh() 开始下拉刷新
autoPullToRefresh() 自动下拉刷新
stopPullToRefresh() 停止下拉刷新
noticeNoMoreData() 通知已经没数据可加载
resetNoMoreData() 重新设置没有数据
stopLoadingMore() 停止上拉加载刷新

十、YYImageLoader:网络图片加载

方法 作用
loadImage(urlString: String,placeholder: UIImage? = nil,completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) 加载网络图片
loadImage(url: URL, placeholder: UIImage? = nil,completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) 加载网络图片
loadImage(request: URLRequest,placeholder: UIImage? = nil,completion: ((_ success: Bool, _ error: Error?) -> Void)? = nil) 加载网络图片
方法 作用
diskCacheMaxAge 设置最大缓存时间
timeoutIntervalForRequest 请求超时
requestCachePolicy 图片加载策略

十一、YYDialog:通用提示框

AlertDialog

YYDialog
            .createAlertDialog()
            .defalutDialog()
            .setTitleColor(color: UIColor.red)
            .setTitleSize(ofSize: 20)
            .setContentColor(color: UIColor.gray)
            .setSubmitBtnSize(ofSize: 20)
            .setSubmitBtnContentColor(color: UIColor.green)
            .setAnimationOption(animationOption: .zoom)
            .setSubmitButtonListener(clickSubmitBlock: {
                _ in
                YYDialog
                    .createToast()
                    .show(view: self.view, text: "点击了确定按钮")
            })
            .setButtonType(btnType: .both)
            .show(title: "提示", message: "因为你是这个世界上最干净的,最温暖的,最柔软的,我不能用那些通用的所谓聪明来解释你,来对待你,来敷衍你。")

Toast

YYDialog
            .createToast()
            .show(view: self.view, text: "因为你是这个世界上最干净的,最温暖的,最柔软的,我不能用那些通用的所谓聪明来解释你,来对待你,来敷衍你。")

LoadingDialog

let dialog = YYDialog
            .createLoadingDialog()
            .defalutDialog()
        
 dialog
         .setMessageSize(fontSize: 16)
          .setContentViewCornerRadius(radius: 5)
          .setMaskLayer(showMaskLayer: true)
          .setAnimationOption(animationOption: .zoom)
          .show(message: "请稍后...")
1.实现BaseDialogContentView
属性 作用
_contentWidth 提示框宽度,BaseDialogContentView已设置默认值
_contentHeight 提示框高度,必设值
animationOption 提示框动画,BaseDialogContentView已设置默认值
2.自定义使用方法
let dialog=YYDialog
            .createLoadingDialog()
            .customDialog(custom: CustomLoadingDialog())
        
 dialog.show()

十二、DataManager的使用(Http、UserDefaults、File、SQLite)

DataManager的属性
属性 作用
GlobalSetting(Http全局参数设定模块)
showHttpRequestLog Http请求日志输出
cacheTimeOutWithClear 缓存过期时间
timeoutIntervalForRequest 超时时间
HttpOfNormal(Http的基本网络请求模块)
Request<T:Convertible>.request(...) Http通用请求方法,直接转化成Bean类,Bean类需要继承Convertible
Share.cancel(...) 取消请求
Share.removeAllCache(...) 清除所有缓存
Share.removeObjectCache(...) 根据url和params清除缓存
HttpOfUpload(Http的图片上传模块)
Upload<T:Convertible>.upload(...) Http通用上传方法,直接转化成Bean类,Bean类需要继承Convertible
HttpOfDownload(Http的文件下载模块)
Download.download(...) Http通用下载方法
Download.resume(...) 每次进入下载页面需要进行下载初始化
Download.downloadCancel(...) 取消下载
Download.downloadCancelAll() 取消全部下载
Download.downloadPercent(...) 下载百分比
Download.downloadDelete(...) 删除某个下载
Download.downloadStatus(...) 取消状态
Download.downloadFilePath(...) 下载完成后,文件所在位置
属性 作用
QueryData<T:Convertible>.queryAllData() 查询bean类所有的数据,T代表bean类型,需要继承Convertible以及SQLiteModel
QueryData<T:Convertible>.queryAllDataByAsnyc(...) 异步查询bean类所有数据,T代表bean类型,需要继承Convertible以及SQLiteModel
QueryData<T:Convertible>.queryDataByWhere(...) 根据sql条件查询数据
QueryData<T:Convertible>.queryDataWithWhereByAsync(...) 异步根据sql条件查询数据
QueryData<T:Convertible>.queryDataByFirst(...) 查询第一条数据
Share.insertData(...) 插入数据
Share.insertDataList(...) 插入列表数据
Share.insertDataListByAsync(...) 异步插入列表数据
Share.deleteDataByWhere(...) 根据sql条件删除数据
Share.deleteAllData(...) 删除所有数据
Share.deleteAllDataByAsync(...) 异步删除所有数据
Share.updateData(...) 更新数据
Share.updateDataList(...) 更新数据列表
Share.updateDataListByAsync(...) 异步更新数据列表
Share.drop(...) 删除表
属性 作用
saveObjectForFile(...) 保存字段内容,其中参数appendFolderPathAndFileName代表文件路径,这里只需设定补充路径(/test/test.txt)
queryObjectForFile(...) 根据路径获取内容
属性 作用
saveObjectForKey(...) 保存内容
queryObjectForKey(...) 根据Key获取内容
1.Http
注意:在请求时候需要传入一个泛型类作为json数据的转换数据结构,bean类需要实现Convertible才能转化
属性 作用
setReponseType(responseType:ReponseType) 设置响应方式,cache:返回缓存数据,netWork:返回网络数据,noCacheRetrunNetWork:缓存优先
setHttpTypeAndReqParamType(参数) 设置请求方法以及请求参数类型,post_json:method为post,请求参数为json格式,pos_param:method为post,请求参数为键值对,get:method为get
setReqUrl(requestUrl:String) 设置请求Url
setUrlRequest(urlRequest: URLRequestConvertible) 设置请求URLRequest
setRequestType(requestType:RequestType) 设置请求的类型
setParams(params: Parameters) 设置请求参数集合
setParam(key:String,param:Any) 设置请求参数
setHttpHeaders(headers: HTTPHeaders) 设置请求头列表
setHttpHeader(key:String,header:String) 设置请求头
1. 每次进入下载页面需要进行下载初始化
DataManager.DataForHttp.HttpOfDownload.Download.resume(url: item.downloadUrl, downloadResume: {
        //
 })
2. 文件下载
let downloadParams:HttpDownloadRequestParams=HttpDownloadRequestParams()
            downloadParams
                .setFileName(fileName: "\(item.indexPath.row)---.pdf")
                .setReqUrl(requestUrl: url!)
                .build()
            
DataManager.DataForHttp.HttpOfDownload.Download.download(httpDownloadRequestParams: downloadParams, requestSuccessResult: {
                respone in
               
            },requestFailureResult: {
                error in
                
            },downloadProgress: {
                progress in
                
            })
属性 作用
setFileName(fileName:String) 设置下载文件名
setHttpTypeAndReqParamType(参数) 设置请求方法以及请求参数类型,post_json:method为post,请求参数为json格式,pos_param:method为post,请求参数为键值对,get:method为get
setReqUrl(requestUrl:String) 设置请求Url
setParams(params: Parameters) 设置请求参数列表
setParam(key:String,param:Any) 设置请求参数
setHttpHeaders(headers: HTTPHeaders) 设置请求头列表
setHttpHeader(key:String,header:String) 设置请求头
 let url="xxxxx"
 let httpParams=HttpUploadRequestParams()
 httpParams
         .setParam(key: "type", param: "addroadblock")//设置请求参数也可通过setParams()设置Array
         .setReqUrl(requestUrl: url) //设置请求链接
         .setFileSuffixName(fileSuffixName: ".jpg") //设置文件后缀名,后续上传其它文件扩展也可使用
         .setImages(images: [UIImage(named: "d")!,UIImage(named: "e")!])//设置上传图片列表
         .setMultiparName(multipartName: "imgList") //设置对应后台服务器上传文件字段
         .build()
            
 /**
    通过泛型设置结果转换的been类,可返回上传进度
  */
            
DataManager.DataForHttp.HttpOfUpload.Upload.upload(httpRequestParams: httpParams, requestSuccessResult: {
   result in
 }, requestFailureResult: {
   error in
                            
 }, requestProgress: {
   progress in
 })
属性 作用
setMultiparName(multipartName:String) 后天接口提供的字段名
setImages(images: [UIImage]?) 设置上传图片
setFileSuffixName(fileSuffixName:String) 设置上传图片后缀名
setReqUrl(requestUrl:String) 设置请求url
setParams(params: Parameters) 设置请求参数
setParam(key:String,param:Any)- 设置请求参数
setHttpHeaders(headers: HTTPHeaders)- 设置请求头
setHttpHeader(key:String,header:String) 设置请求头
2.SQLite(数据量比较大的时候花费的时间比较长)
SQLiteVersionMigrate.setDbVersion(dbName:"collectionDB",dbVersion: 0,migrate: {
        oldVersion,newVersion in
        
        for i in oldVersion...newVersion{
            if(i == 1){
                SQLiteVersionMigrate
                    .with(cls: SqliteData.self)
                    .addAttribute(attribute: "a1", dataType: String.self)
                    .addAttribute(attribute: "a2", dataType: String.self)
                    .build()
            }
        }
        
  })
注意:
1.设置数据库名称
2.通过SQLiteVersionMigrate可以进行版本迁移
3.SQLiteVersionMigrate
属性 作用
setDbVersion(...) 设置数据名、版本号、版本变化回调
with(...) 设置需要变化bean类
addAttribute(...) 表需要增加的字段
@objcMembers
class SqliteData: SQLiteModel,Convertible{

  var des:String=""
  var id:Int=0

  override func primaryKey() -> String {
      return "id"
  }

}
注意:bean需要:
1.使用@objcMembers
2.实现SQLiteModel
3.实现Convertible(Json转化成bean需要)
4.实现primaryKey()方法,必须指定主键
let commonSqliteData=SqliteData()
commonSqliteData?.id=0
commonSqliteData?.des="SQLite测试使用"
DataManager.DataForSQLiteDB.Share.insertData(object: commonSqliteData!)
DataManager.DataForSQLiteDB.Share.deleteAllData(cls: SqliteData.self)
DataManager.DataForSQLiteDB.Share.insertDataListByAsync(cls: SqliteData.self, objectList: list, insertCompleteBlock: {
 })
DataManager.DataForSQLiteDB.Share.updateData(object: commonSqliteData!)
let result=DataManager.DataForSQLiteDB.QueryData<SqliteData>.queryAllData()
DataManager.DataForSQLiteDB.Share.updateData(object: commonSqliteData!)
3.File
let result=DataManager.DataForFile<String>.queryObjectForFile(appendFolderPathAndFileName:"test/test.txt")
//保存String类型
DataManager.DataForFile<String>.saveObjectForFile(appendFolderPathAndFileName:"test/test.txt" , object: "123")
//保存类型
DataManager.DataForFile<UserDeBean>.saveObjectForFile(appendFolderPathAndFileName: appendBeanPath, object: userDefault)
3.UserDefaults
DataManager.DataForUserDefaults<String>.saveObjectForKey(key: "key1", object:"1234")
let result=DataManager.DataForUserDefaults<UserDeBean>.queryObjectForKey(key: "key2")

十三、YYDataShowView:数据加载显示页面

属性 作用
init(defaultDataShowViewParams:DefaultDataShowViewParams,...) 默认初始化方法
init(custom:BaseDataShowContentView,visibileHeight:CGFloat?=UIScreen.main.bounds.height,aboveView:UIView?=nil)) 自定义展示内容初始化方法
show(parentView:UIViewController) 显示DataShowView
hide() 隐藏DataShowView
属性 作用
setDefaultDataShowViewType(...) 设置显示样式:noData、noNetWork、loading
setDefaultNoDataShowImg(...) 设置没有数据时显示的图片
setDefaultNoNetworkShowImg(...) 设置没有网络是显示的图片
setDefaultShowImgWidth(...) 设置显示图片的宽度
setDefaultShowImgHeight(...) 设置显示图片的高度
setDefaultShowNoDataText(...) 设置没有数据时显示的文本
setDefaultShowNoNetWorkText(...) 设置没有网络时显示的文本
setDefaultShowTextSize(...) 设置显示文本的字体大小
setDefaultShowTextColor(...) 设置显示文本的颜色
setDefaultShowButtonText(...) 设置按钮的文本
setDefaultShowButtonTextSize(...) 设置按钮的字体大小
setDefaultShowButtonTextColor(...) 设置按钮的文本颜色
setDefaultShowButtonBorderWidth(...) 设置按钮的外边框宽度
setDefaultShowButtonBorderColor(...) 设置按钮外边框颜色
setDefaultSHowButtonPadding(...) 设置按钮的内边距
setDefaultShowButtonCornerRadius(...) 设置按钮的圆角
setHiddenShowButton(i...) 设置按钮是否显示
setDefaultShowButtonBackgroundColor(...) 设置按钮背景颜色
setDefaultShowLoadingText(...) 设置加载文本
setDefaulutShowLoadingImgsTimeInterval(...) 设置加载Image的间隔时间
let defaultDataShowViewParams=DefaultDataShowViewParams()
defaultDataShowViewParams
        .setDefaultNoDataShowImg(defaultNoDataShowImg: "nodata")
        .build()
dataShowView=YYDataShowView(defaultDataShowViewParams:defaultDataShowViewParams,aboveView: navigation.bar,reloadHandler: {
        YYDialog.createToast().show(view: self.view, text: "点击重新加载按钮")
})
    
dataShowView!.show(parentView: self)
 let defaultDataShowViewParams=DefaultDataShowViewParams()
 defaultDataShowViewParams
        .setDefaultDataShowViewType(showViewType: .noNetWork)
        .setDefaultNoNetworkShowImg(defaultNoNetworkShowImg: "nonetwork")
        .build()
    
  dataShowView=YYDataShowView(defaultDataShowViewParams: defaultDataShowViewParams,aboveView: navigation.bar,reloadHandler: {
        YYDialog.createToast().show(view: self.view, text: "点击重新加载按钮")
    })
    
   dataShowView!.show(parentView: self)
let imgs=["default_data_show_loading1","default_data_show_loading2","default_data_show_loading3","default_data_show_loading4","default_data_show_loading5","default_data_show_loading6","default_data_show_loading7","default_data_show_loading8","default_data_show_loading10","default_data_show_loading11","default_data_show_loading12"]
    
let defaultDataShowViewParams=DefaultDataShowViewParams()
    defaultDataShowViewParams
        .setDefaultDataShowViewType(showViewType: .loading)
        .setDefaultLoadingImags(defaultLoadingImags: imgs)
        .build()
    
 dataShowView=YYDataShowView(defaultDataShowViewParams: defaultDataShowViewParams,aboveView: navigation.bar)
 dataShowView!.show(parentView: self)
1.实现BaseDataShowContentView,然后指定_contentHeight(高度)
2.加载自定义View
let customView=CustomDataShowView()
YYDataShowView.init(custom: customView,aboveView: navigation.bar).show(parentView: self)

十四、YYTagView

属性 作用
YYTagViewBuilder
setTagTextColor(...) 设置Tag的字体颜色
setTagSelectedTextColor(...) 设置Tag点击的字体颜色
setTagLineBreakMode(...) 设置Tag的LineBreakMode
setTagBackgroundColor(...) 设置Tag的背景颜色
setTagSelectBackgroundColor(...) 设置Tag的选择时的背景颜色
setTagCornerRadius(...) 设置Tag圆角
setTagBorderWidth(...) 设置Tag外框宽度
setTagBorderColor(...) 设置Tag的外框颜色
setTagSelectedBorderColor(...) 设置Tag外框选择时颜色
setTagHorizontalPadding(...) 设置Tag的左右内边距
setTagVerticalPadding(...) 设置Tag的上下内边距
setTagHorizontalMargin(...) 设置Tag的左右外边距
setTagVerticalMargin(...) 设置Tag的上下外边距
setTagAlignment(...) 设置TagView的位置
setTagShadowColor(...) 设置Tag的阴影颜色
setTagShadowRadius(...) 设置Tag的阴影圆角
setTagTextFont(...) 设置Tag的字体
setTagItem(...) 增加TagItem
setTagItems(...) 设置TagItem列表
setTagVerticalMargin(...) 设置Tag的上下外边距
buildTagView(...) 返回TagView
TagView
removeTag(...) 移除TagItem
removeAllTags() 移除TagItems
setTagClick(...) 设置TagItem点击事件

十五、MVP

步骤:
代码

十六、通用工具类

属性 作用
getNavBarHeight() 获取NavigationBar高度
isIphoneX() 判断是否是iphoneX以上
属性 作用
clickSelectBgChange(...) 设置View点击时的背景变化
RGBColor(...) 获取RGB颜色
colorWithHexString() 16进制颜色转化成UIColor
属性 作用
getString(...) 获取本地Localizable对应的内容
initUserLanguage() 初始化语言
setLanguage(...) 设置当前语言
getCurrentLanguage() 获取当前语言
属性 作用
getLabHeigh(...) 获取UILabel高度
属性 作用
position(...) 设置View的位置和高度
属性 作用
init(...) 初始化UILabel,设置内边距

本文章会根据需要持续更新,建议点赞收藏,便于查看。也欢迎大家提出更多建议。

上一篇 下一篇

猜你喜欢

热点阅读