iOS学习之SKTagView的使用
SKTagView是一款支持自动布局的标签tag.
特性:
-流式展示标签
-可以配置标签的颜色、事件、间隔、外边距等
-支持Auto layout
-可以在UITableViewCell中良好展示
-支持横竖屏切换
-不使用UICollectionView.
// 配置
- (void)configTagView { self.label = [[UILabel alloc] initWithFrame:CGRectMake(10, 90, 100, 30)]; self.label.textColor = [UIColor blackColor]; self.label.font = [UIFont systemFontOfSize:13]; self.label.text = @"历史搜索"; [self.view addSubview:self.label]; // 先移除掉所有 [self.tagView removeAllTags]; // 初始化 self.tagView = [[SKTagView alloc] init]; // 整个tagView对应其SuperView的上左下右距离 self.tagView.padding = UIEdgeInsetsMake(10, 10, 10, 10); // 上下行之间的距离 self.tagView.lineSpacing = 10; // item之间的距离 self.tagView.interitemSpacing = 20; // 最大宽度 self.tagView.preferredMaxLayoutWidth = 375; // @property (assign, nonatomic) CGFloat regularWidth; //!< 固定宽度 // @property (nonatomic,assign ) CGFloat regularHeight; //!< 固定高度 // 原作者没有能加固定宽度的,自己修改源码加上了固定宽度和高度,默认是0,就是标签式布局,如果实现了,那么就是固定宽度高度 // self.tagView.regularWidth = 100; // self.tagView.regularHeight = 30; // 开始加载 [self.dataSource enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // 初始化标签 SKTag *tag = [[SKTag alloc] initWithText:self.dataSource[idx]]; // 标签相对于自己容器的上左下右的距离 tag.padding = UIEdgeInsetsMake(3, 15, 3, 15); // 弧度 tag.cornerRadius = 3.0f; // 字体 tag.font = [UIFont boldSystemFontOfSize:12]; // 边框宽度 tag.borderWidth = 0; // 背景 tag.bgColor = [UIColor colorWithRed:244/255.0 green:244/255.0 blue:244/255.0 alpha:1]; // 边框颜色 tag.borderColor = [UIColor colorWithRed:191/255.0 green:191/255.0 blue:191/255.0 alpha:1]; // 字体颜色 tag.textColor = [UIColor colorWithRed:53/255.0 green:53/255.0 blue:53/255.0 alpha:1]; // 是否可点击 tag.enable = YES; // 加入到tagView [self.tagView addTag:tag]; }]; // 点击事件回调 self.tagView.didTapTagAtIndex = ^(NSUInteger idx){ NSLog(@"点击了第%ld个",idx); }; // 获取刚才加入所有tag之后的内在高度 CGFloat tagHeight = self.tagView.intrinsicContentSize.height; NSLog(@"高度%lf",tagHeight); // 根据已经得到的内在高度给SKTagView创建frame self.tagView.frame = CGRectMake(0, 120, 375, tagHeight); [self.tagView layoutSubviews]; [self.view addSubview:self.tagView]; }
在UISearchBar的代理方法里面实现搜索的时候隐藏,不搜索的时候显示
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { NSLog(@"%@",searchText); if (searchText.length == ) { // 没有文字了 self.label.hidden = NO; self.tagView.hidden = NO; } else { self.label.hidden = YES; self.tagView.hidden = YES; } }
下面咱们来看看如何让他在TableViewCell里面实现高度自适应的
- (void)configCell:(MKJTagViewTableViewCell *)cell indexpath:(NSIndexPath *)indexpath { [cell.tagView removeAllTags]; cell.tagView.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width; cell.tagView.padding = UIEdgeInsetsMake(, , , ); cell.tagView.lineSpacing = ; cell.tagView.interitemSpacing = ; cell.tagView.singleLine = NO; // 给出两个字段,如果给的是0,那么就是变化的,如果给的不是0,那么就是固定的 cell.tagView.regularWidth = ; cell.tagView.regularHeight = ; NSArray *arr = [self.dataSource[indexpath.row] valueForKey:@"first"]; [arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { SKTag *tag = [[SKTag alloc] initWithText:arr[idx]]; tag.font = [UIFont systemFontOfSize:]; tag.textColor = [UIColor colorWithRed:arc4random() % / 255.0 green:arc4random() % / 255.0 blue:arc4random() % / 255.0 alpha:]; tag.bgColor =[UIColor colorWithRed:arc4random() % / 255.0 green:arc4random() % / 255.0 blue:arc4random() % / 255.0 alpha:]; tag.cornerRadius = ; tag.enable = YES; tag.padding = UIEdgeInsetsMake(, , , ); [cell.tagView addTag:tag]; }]; cell.tagView.didTapTagAtIndex = ^(NSUInteger index) { NSLog(@"点击了%ld",index); }; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [tableView fd_heightForCellWithIdentifier:identyfy configuration:^(id cell) { [self configCell:cell indexpath:indexPath]; }]; }
iOS学习之SKTagView的使用的更多相关文章
- iOS学习-压缩图片(改变图片的宽高)
压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...
- 【原】iOS学习之事件处理的原理
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- 【原】iOS学习47之第三方-FMDB
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...
- iOS学习路线图
一.iOS学习路线图 二.iOS学习路线图--视频篇 阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天 学习后目标: ...
- 黑苹果-IOS学习的开始
深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...
- iOS 学习资源
这份学习资料是为 iOS 初学者所准备的, 旨在帮助 iOS 初学者们快速找到适合自己的学习资料, 节省他们搜索资料的时间, 使他们更好的规划好自己的 iOS 学习路线, 更快的入门, 更准确的定位的 ...
- iOS学习之UINavigationController详解与使用(一)添加UIBarButtonItem
http://blog.csdn.net/totogo2010/article/details/7681879 1.UINavigationController导航控制器如何使用 UINavigati ...
- iOS学习资源个人整理
1208更新: http://www.tuyiyi.com 图翼网 https://github.com/Alamofire/Al ...
随机推荐
- [C语言入门笔记]循环与运算符
循环与运算符 什么是循环? 循环就是一个不停工作的东西,可以反复的实现一个功能,这个才是计算机的重点.计算机可以重复的做一件事情,这样子可以省很多事情 循环的种类有哪些? While Do while ...
- C#编码规范 转 http://www.cnblogs.com/wulinfeng/archive/2012/08/31/2664720.html
C#编码规范 1 规范目的 ……………………………………………………… 3 2 适用范围 ……………………………………………………… 3 3 代码注释 ………………………………………………… ...
- [ios学习笔记之视图、绘制和手势识别]
一 视图 二 绘制 三 手势 00:31 UIGestureRecognizer 抽象类 两步 1添加识别器(控制器或者视图来完成) 2手势识别后要做的事情 UIPanGestureRecognize ...
- 从下往上看--新皮层资料的读后感 第三部分 70年前的逆向推演- 从NN到ANN
第三部分 NN-ANN 70年前的逆向推演 从这部分开始,调整一下视角主要学习神经网络算法,将其与生物神经网络进行横向的比较,以窥探一二. 现在基于NN的AI应用几乎是满地都是,效果也不错,这种貌似神 ...
- PHP5.3.3+Apache2.2.16+MySQL5.1.49
轻松配置PHP5.3.3+Apache2.2.16+MySQL5.1.49,下面是有详细的步骤说明. 第一步:下载安装的文件 1. MySQL:下载地址mysql-5.1.49-win32.msi ...
- wmic 命令的一个汇总,功能很强大
获得系统版本信息wmic datafile where Name='c:\\windows\\explorer.exe' get Manufacturer,Version,Filename 获得系统进 ...
- 利用windbg 分析IIS 的线程池w3wp程序多线程挂起问题
前几天有个朋友发个了在windows server 2008跑的IIS 跑的程序w3wp程序dmp,要我帮忙分析为何线程都挂起不运行 经过查阅资料用windbg可以调试可以输出线程的调用堆栈,但是准备 ...
- java selenium (十) 操作浏览器
本篇文章介绍selenium 操作浏览器 阅读目录 浏览器最大化 前进,后退, 刷新 public static void testBrowser(WebDriver driver) throws E ...
- TextMate2 最新版下载及源码编译过程
TextMate2 已经开源,我刚编译成功,如果有需要的同学可以点击下面百度网盘的链接下载.我系统版本是:Mac OS X 10.8.4. TextMate version 2.0-alpha.946 ...
- js Date 函数方法 和 移动端数字键盘调用
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...