用于以分词形式显示某个对象的多个标签,比如:

用法

将 TagsView.h/.m 文件拷贝到你的项目文件夹,在需要用到该控件的地方导入 TagsView.h 头文件。

IB 中的工作

拖一个 UIView 到故事板中,设置 UIView 宽度,高度随意(高度会自动计算)。将 Class 改成 TagsView。你会看到故事板变成这个样子:

可能效果不是你想要的,没关系,我们会在运行时改变它。

然后用 Assistant 编辑器为这个控件创建一个 IBOutlet 连接:

@property (weak, nonatomic) IBOutlet TagsView *tagsView;

在 ViewController 中

在 viewDidLoad 方法中,添加如下代码:

    // 1
    _tagsView.showDebugBorder = YES;
    // 2
    _tagsView.tags=@[@"睡前故事",@"热门推荐",@"经典",@"儿童教育"];
    // 3
   _tagsView.frame = _tagsView.intrinsicFrame;
  1. 这会在控件周围显示一个边框,以便我们查看它的真实框架(即 intrinsicFrame)。
  2. 设置要显示的标签文本 tags,也就是一个简单的字符串数组。
  3. 让 tagsView 的框架和真实内容的大小相符(intrisincFrame)。

实际运行效果如下:

属性

TagsView 支持以下属性,你可以通过这些属性实现一定程度的定制:

  1. tags:要显示的标签文本 tags,一个简单的字符串数组。
  2. textColor:标签文本的颜色。
  3. fontSize:标签文本的字体大小。
  4. cornerRadius:每个 tag 的圆角。
  5. borderColor:tag 包裹的边框颜色。
  6. borderWidth:边框粗细。
  7. textInsets:边框和文本之间的留白 Insets,只有 top、left 值有用。
  8. borderInsets:边框与相邻边框之间的留白 Insets,只有 top、left 值有用。
  9. intrinsicFrame:根据实际内容计算出来的框架大小,只读属性。
  10. showDebugBorder:是否显示控件本身的边框。

Demo

在 Xcode 8 中打开 TagsView.xcodeproj。

有任何问题和建议,请与作者联系。

一个 token 控件的更多相关文章

  1. appium+python:自己写的一个滑动控件的方式

    #调用方式roll_ele("ID","ele_id","7","up",3)#将控件分为7格,从底部倒数第二格向上滑动 ...

  2. 使用 ViewPager 和 RadioGroup 封装的一个导航控件

    import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.dra ...

  3. 设计一个 iOS 控件

    转载自:http://blog.csdn.net/zhangao0086/article/details/45622875 代码的等级:可编译.可运行.可测试.可读.可维护.可复用 前言 一个控件从外 ...

  4. Android 一个日历控件的实现代码

    转载  2017-05-19   作者:Othershe   我要评论 本篇文章主要介绍了Android 一个日历控件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看 ...

  5. ASP.NET#在设计窗口上添加了一个SqlDataSource控件后,没有显示出来?

    在设计窗口上添加了一个SqlDataSource控件后,没有显示出来,但后台代码是有的 处理的办法:菜单栏->视图->可视辅助->ASP.NET非可视控件 (我用的是VS2012)

  6. 要使用C#实现一个ActiveX控件

    要使用C#实现一个ActiveX控件,需要解决三个问题: 1.使.NET组件能够被COM调用 2.在客户机上注册后,ActiveX控件能通过IE的安全认证 3.未在客户机上注册时,安装包能通过IE的签 ...

  7. 将四个按钮放入一个父控件的好处:方便移动,只需要改变父控件的y值,就可移动四个按钮

      将四个按钮放入一个父控件的好处:方便移动,只需要改变父控件的y值, 就可移动四个按钮               https://www.evernote.com/shard/s227/sh/78 ...

  8. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  9. 一个WPF控件 诡异的MouseEvent 。

    背景: private System.Windows.Controls.Border _borderTouch; private bool _mouseDown = false;  private S ...

随机推荐

  1. Flask 请求源码分析

    执行app.run()方法: def run(self, host=None, port=None, debug=None, **options): from werkzeug.serving imp ...

  2. mysql数据库存储过程数据迁移案例与比较

    cursor 与 insert ...select 对比: cursor:安全,不会造成死锁,可以在服务运行阶段跑,比较稳定. insert...select :速度快,但是可能造成死锁,相比curs ...

  3. cdojR - Japan

    地址:http://acm.uestc.edu.cn/#/contest/show/95 题目: R - Japan Time Limit: 3000/1000MS (Java/Others)     ...

  4. $微信小程序开发实践点滴——接入Bmob后端云

    Bmob后端云官网:http://www.bmob.cn/ 微信公众平台官网:https://mp.weixin.qq.com/ 微信小程序官方开发文档:https://mp.weixin.qq.co ...

  5. sqlservr.exe占用大量内存

    SQL Server是如何使用内存 最大的开销一般是用于数据缓存,如果内存足够,它会把用过的数据和觉得你会用到的数据统统扔到内存中,直到内存不足的时候,才把命中率低的数据给清掉.所以一般我们在看sta ...

  6. 函数:生成1-n的随机数组,

    方法很笨,不过可行: #include <stdio.h> /** 功能:获取一个1-n的随机数数组,这些随机数都互不相同 ** 入参:n-表示最大随机数: *randArray -用于储 ...

  7. 《Python学习手册》(三)

    string 字符串,和列表.元组,都适用序列操作. 关于python转义字符 迭代 for x in S: print(x) [c * 2 for c in S] Comparasion: > ...

  8. UDP协议----简单的CS模型实现

    UDP简单介绍 传输层主要应用的协议模型有两种,一种是TCP协议,另外一种则是UDP协议.TCP协议在网络通信中占主导地位,绝大多数的网络通信借助TCP协议完成数据传输.但UDP也是网络通信中不可或缺 ...

  9. Qt debug和release

    debug会默认给变量赋初始值,但是release不会. 所以: 在头文件中声明指针P* p时,最好给它初始化:P* p=NULL; 不然有可能造成野指针的情况

  10. Define class with itself as generic implementation. Why/how does this work?

    https://stackoverflow.com/questions/10709061/define-class-with-itself-as-generic-implementation-why- ...