专栏首页码客iOS开源组件分类总结

iOS开源组件分类总结

下拉刷新

ZJRefreshControl

ZJRefreshControl

下拉刷新 加载更多

Swift

调用方式

//只有下拉刷新
refreshControl = ZJRefreshControl(scrollView: appTableView, refreshBlock: {
        self.dropViewDidBeginRefreshing()
})

//下拉刷新和上拉加载更多
refreshControl = ZJRefreshControl(scrollView: msgTableView,refreshBlock: {
            self.dropViewDidBeginRefreshing();
        },loadmoreBlock: {
            self.dropViewDidBeginLoadmore();
});

//下拉刷新调用的方法
func dropViewDidBeginRefreshing()->Void{
    println("-----刷新数据-----");
    self.delay(1.5, closure: {
        //结束下拉刷新必须调用
      self.refreshControl.endRefreshing();
    });
}

//上拉加载更多调用的方法
func dropViewDidBeginLoadmore()->Void{
    println("-----加载数据-----");
    self.delay(1.5, closure: {
        //结束加载更多必须调用
      self.refreshControl.endLoadingmore();
    });
}

//延迟执行方法
func delay(delay:Double, closure:()->()) {
    dispatch_after(
        dispatch_time(
            DISPATCH_TIME_NOW,
            Int64(delay * Double(NSEC_PER_SEC))
        ),
        dispatch_get_main_queue(), closure)
}

图片/视频选择

DNImagePicker

DNImagePicker

图片选择

Objective-C

调用方式

//代理 DNImagePickerControllerDelegate

let imagePicker = DNImagePickerController();
imagePicker.imagePickerDelegate = self;
imagePicker.filterType = DNImagePickerFilterType.Photos;
imagePicker.navigationBar.tintColor = UIColor.whiteColor();
self.presentViewController(imagePicker, animated: true, completion: nil);

//代理方法
func dnImagePickerControllerDidCancel(imagePicker: DNImagePickerController!) {
    imagePicker.dismissViewControllerAnimated(true, completion: nil);
}
    
func dnImagePickerController(imagePicker: DNImagePickerController!, sendImages imageAssets: [AnyObject]!, isFullImage fullImage: Bool) {
    
    if(imageAssets.count > 1){
        self.showNoticeErr("只能选择一张图片", time: 1.2);
    }else{
        let dnasset = imageAssets[0] as! DNAsset;
        DNAsset.getALAsset(dnasset, callback: { (alasset) in
            if(alasset != nil){
                let representation =  alasset.defaultRepresentation()
                let image = UIImage(CGImage:representation.fullResolutionImage().takeUnretainedValue())
                let data = ZJ_ImageUtils.imageCompressJPG(image);
            }
        })
    }
}

弹出层

DOAlertController

DOAlertController

弹出确认取消的层

Swift

调用方式

let alertController = DOAlertController(title: "新建文件夹", message: "", preferredStyle: .Alert)
alertController.addTextFieldWithConfigurationHandler { textField in
    textField.placeholder = "请输入文件夹的名称";
}
let cancelAction = DOAlertAction(title: "取消", style: .Cancel, handler: nil)
let okAction = DOAlertAction(title: "确认" ,style: .Default) { action in
    
}
alertController.addAction(cancelAction)
alertController.addAction(okAction)
presentViewController(alertController, animated: true, completion: nil)

Sphere Menu

Sphere Menu

弹出按钮菜单

Swift

调用方式

//实现代理 DNImagePickerControllerDelegate

func addMenu() {
    let start = UIImage(named: "start")
    let image1 = UIImage(named: "icon_file_menu_folder")
    let image2 = UIImage(named: "icon_file_menu_img")
    let image3 = UIImage(named: "icon_file_menu_movie")
    let images:[UIImage] = [image1!,image2!,image3!]
    menu = SphereMenu(startPoint: CGPointMake(screenWidth-40, screenHeight-100), startImage: start!, submenuImages:images, tapToDismiss:true)
    menu.delegate = self
    self.view.addSubview(menu)
}

//代理方法
func sphereDidSelected(index: Int) {
    if(index == 0){
        chooseFolder();
    }else if(index == 1){
        chooseImage();
    }else if(index == 2){
        chooseVideo();
    }
    
}

//隐藏菜单
self.menu.hideViewToBottom();

//显示菜单
self.menu.showView();

侧滑菜单

RESideMenu

RESideMenu

侧滑菜单

Objective-C

TableViewCell侧滑

MGSwipeTableCell

MGSwipeTableCell

TableViewCell侧滑

Objective-C

调用方式

  • 1 引用头文件
//侧滑按钮
#import "MGSwipeButton.h"
#import "MGSwipeTableCell.h"
  • 2 需要侧滑的tableViewCell继承MGSwipeTableCell
  • 3 Controller实现接口MGSwipeTableCellDelegate
  • 4 相关代码
func createRightButtons() -> Array<MGSwipeButton>{
    var buttonArray = Array<MGSwipeButton>();
    let titleArray = [
        "",
        //""
    ];
    let iconArray = [
        UIImage(named: "cell_cross.png"),
        //UIImage(named: "cell_menu.png"),
    ];
    let backgroundColorArray = [
        UIColor(red: 1, green: 102/255, blue: 102/255, alpha: 1),
        //UIColor(red: 104/255, green: 187/255, blue: 248/255, alpha: 1),
    ];
    
    let insets = UIEdgeInsets(top: 0, left: 30, bottom: 0, right: 30);
    
    for i in 0  ..< titleArray.count  {
        let button = MGSwipeButton(title: titleArray[i], icon: iconArray[i], backgroundColor: backgroundColorArray[i],insets: insets);
        buttonArray.append(button);
    }
    
    return buttonArray;
}
    
func swipeTableCell(cell: MGSwipeTableCell!, tappedButtonAtIndex index: Int, direction: MGSwipeDirection, fromExpansion: Bool) -> Bool {
    if(index == 0){
        let indexPath = tableView.indexPathForCell(cell);
        print("点击了\(indexPath)")
    }
    return true;
}
  • 5 cell中调用
cell.rightButtons = createRightButtons();
cell.rightSwipeSettings.transition = MGSwipeTransition.Border;
cell.delegate = self;

数据库

SQLiteDB

SQLiteDB

操作Sqlite数据库

Swift

调用方式

let db = SQLiteDB.sharedInstance()
let data = db.query("SELECT * FROM customers WHERE name='John'")
let row = data[0]
if let name = row["name"] {
    textLabel.text = name as! String
}

数据请求

Swift数据请求常用的三个库

Alamofire

网络请求库

Swift

SwiftyJSON

转JSON

Swift

Alamofire-SwiftyJSON

方便以上两个组件的结合使用

Swift

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • H5网页唤醒App有哪些做法

    在这个流量为王的互联网背景下,移动端的H5页面显然在导流上承担着重要作用,在H5页面上,我们对引流的需求有两种:

    走在河边的小鹿
  • uni-app自定义弹窗模板uniPop组件

    uni-app自定义弹窗uniPop.vue模板|uniapp仿微信弹窗/仿ios弹窗效果|msg信息框|alert对话框|loading提示框

    andy2018
  • iPhone误删通讯录怎么恢复?说出来可能你不信

      iPhone误删通讯录怎么恢复?很多苹果用户在刚使用的时候对一些操作有些不熟悉,这样可能就会因为一些误操作将手机中的数据删除了,可是当要找回删除的数据怎么办...

    科技第六人
  • IOS/MacOS沙箱逃逸竞赛

    iOS 12在几周前发布了,并带来了许多安全方面的修复和改进。特别是,这个新版本碰巧修补了我们在Synacktiv发现的一个很厉害的内核漏洞。

    安恒网络空间安全讲武堂
  • 从6730个微信用户中分析出大家的手机使用习惯

    之前写了一篇分析小程序用户微信名的文章,从00-90后的微信昵称,发现如下规律。。。大家反响很大,喜欢不喜欢的都有,全网各个平台(微信+网站)总浏览量超10万,...

    数据森麟
  • iOS学习——iOS项目增加新的字体

      在项目开发过程中,iOS系统自带的字体库可能不适应需求,需要导入其他的字体库。下面是iOS项目增加新的字体的基本思路,基本上分为三步:

    mukekeheart
  • iOS学习——#define、const、typedef的区别

    在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define、const以及typedef。那么它们之间有什么区...

    mukekeheart
  • iOS学习——NSLog输出各种类型

    在开发过程中,在调试过程中经常打印不出自己想要的数据格式,还时常报警告,所以整理了一下iOS中用NSLog打印各种数据类型的样式。 整型占位符说明 : %d ...

    mukekeheart
  • Safari扩展

    本系列文章分两部分,介绍macOS浏览器扩展背后的技术,以及恶意插件如何窃取密码、银行细节和其他敏感用户数据。

    安恒网络空间安全讲武堂
  • iOS学习——页面的传值方式iOS----KVC和KVO 详解

    在iOS开发过程中,页面跳转时在页面之间进行数据传递是很常见的事情,我们称这个过程为页面传值。页面跳转过程中,从主页面跳转到子页面的数据传递称之为正向传值;反...

    mukekeheart

扫码关注云+社区

领取腾讯云代金券