NWSTokenView
简介
NWSTokenView 是一个灵活的 UIView 子类,以类似于 Messages 应用程序的方式显示一组对象。
为什么它与其他的不同?
与其它类似库相比,NWSTokenView 的主要区别在于它允许您通过 XIB 文件或编程方式轻松创建自己的自定义令牌,而无需所有烦恼。NWSTokenView 也提供了可以使用的默认令牌样式。
安装
NWSTokenView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod "NWSTokenView"
使用方法
要运行示例项目,请克隆仓库,并首先从示例目录中运行 pod install
。
如何使用
导入
import NWSTokenView
子类 NWSToken
您可以通过子类化 NWSToken 类创建自己的自定义令牌。在示例中,您可以看到这是如何在 NWSImageToken 类中实现的。
public class NWSImageToken: NWSToken
{
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var titleLabel: UILabel!
public class func initWithTitle(title: String, image: UIImage? = nil) -> NWSImageToken?
{
…set UI here…
}
}
协议一致性
class ViewController: UIViewController, NWSTokenViewDataSource, NWSTokenViewDelegate
{
override func viewDidLoad()
{
super.viewDidLoad()
tokenView.dataSource = self
tokenView.delegate = self
}
}
数据源实现
将令牌数据返回以在 tokenView 中显示。
要显示的令牌数
func numberOfTokensForTokenView(tokenView: NWSTokenView) -> Int
{
return tokens.count
}
tokenView 的边距
func insetsForTokenView(tokenView: NWSTokenView) -> UIEdgeInsets?
{
return UIEdgeInsetsMake(5, 5, 5, 5)
}
tokenView 的标题
func titleForTokenViewLabel(tokenView: NWSTokenView) -> String?
{
return "To:"
}
tokenView 标签的字体
func fontForTokenViewLabel(tokenView: NWSTokenView) -> UIFont?
{
return UIFont.systemFont(ofSize: 14.0)
}
tokenView 标签的文本颜色
func textColorForTokenViewLabel(tokenView: NWSTokenView) -> UIColor?
{
return UIColor.black
}
当没有令牌时 tokenView 的占位文本
func titleForTokenViewPlaceholder(tokenView: NWSTokenView) -> String?
{
return "Search contacts..."
}
tokenView textView 的字体
func fontForTokenViewTextView(tokenView: NWSTokenView) -> UIFont?
{
return UIFont.systemFont(ofSize: 14.0)
}
当没有令牌时 tokenView textView 的文本颜色
func textColorForTokenViewPlaceholder(tokenView: NWSTokenView) -> UIColor?
{
return UIColor.lightGray
}
tokenView textView 的文本颜色
func textColorForTokenViewTextView(tokenView: NWSTokenView) -> UIColor?
{
return UIColor.black
}
令牌的自定义视图
func tokenView(tokenView: NWSTokenView, viewForTokenAtIndex index: Int) -> UIView?
{
let contact = contacts[Int(index)]
if let token = NWSToken.initWithTitle(contact.name, image: contact.image)
{
return token
}
return nil
}
委托实现
返回代币视图的行为。
当选中代币时通知你
func tokenView(tokenView: NWSTokenView, didSelectTokenAtIndex index: Int)
{
// NOTE - If getting the token itself using ‘tokenForIndex()’, be sure to convert the token to your own subclass.
// Example:
// var token = tokenView.tokenForIndex(index) as! NWSImageToken
}
当取消选中代币时通知你
func tokenView(tokenView: NWSTokenView, didDeselectTokenAtIndex index: Int)
{
// NOTE - If getting the token itself using ‘tokenForIndex()’, be sure to convert the token to your own subclass.
// Example:
// var token = tokenView.tokenForIndex(index) as! NWSImageToken
}
当删除代币时通知你(例如,选中然后后退/覆盖等)
func tokenView(tokenView: NWSTokenView, didDeleteTokenAtIndex index: Int)
{
// Do something
}
当代币视图的textField变为第一响应者时通知你
func tokenView(tokenViewDidBeginEditing: NWSTokenView)
{
// Do something
}
当代币视图的textField放弃第一响应者时通知你
func tokenViewDidEndEditing(tokenView: NWSTokenView)
{
// Do something
}
当代币视图的textField的文本发生变化时通知你
func tokenView(tokenView: NWSTokenView, didChangeText text: String)
{
// Do something
}
当代币视图的textField的文本返回时通知你
func tokenView(tokenView: NWSTokenView, didEnterText text: String)
{
// Do something
}
当代币视图的内容大小发生变化时通知你(例如,添加新行)
func tokenView(tokenView: NWSTokenView, contentSizeChanged size: CGSize)
{
// Do something
}
当代币视图加载完所有代币时通知你
func tokenView(tokenView: NWSTokenView, didFinishLoadingTokens tokenCount: Int)
{
// Do something
}
作者
詹姆斯·希克曼,[email protected]
许可证
MIT许可证(MIT)
版权所有 (c) 2015 Appmazo, LLC
以下条件下,允许任何人免费获得本软件和相关的文档资料(以下简称“软件”)的副本,不受任何限制地处理该软件,包括但没有限制在以下权利:使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向使用该软件的人员提供上述权利,具体条件如下:
以上版权声明和许可声明应包含在软件的所有副本或大部分副本中。
软件按原样提供,没有任何形式的保证,明示或暗示,包括但没有限制在以下保证:适销性、适用于特定目的和非侵权性。在任何情况下,作者或版权持有人不会对任何索赔、损害或其他责任承担法律责任,无论源于合同、侵权或其他原因,因使用或与其他方式使用软件而产生或与之相关。