NWSTokenView 2.1.0

NWSTokenView 2.1.0

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布上次发布2019 年 6 月
SPM支持 SPM

NitWit StudiosJames Hickman 维护。



NWSTokenView

CI Status Version License Platform Beerpay Beerpay

NWSTokenView Demo

简介

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

以下条件下,允许任何人免费获得本软件和相关的文档资料(以下简称“软件”)的副本,不受任何限制地处理该软件,包括但没有限制在以下权利:使用、复制、修改、合并、发布、分发、再许可和/或销售软件的副本,并允许向使用该软件的人员提供上述权利,具体条件如下:

以上版权声明和许可声明应包含在软件的所有副本或大部分副本中。

软件按原样提供,没有任何形式的保证,明示或暗示,包括但没有限制在以下保证:适销性、适用于特定目的和非侵权性。在任何情况下,作者或版权持有人不会对任何索赔、损害或其他责任承担法律责任,无论源于合同、侵权或其他原因,因使用或与其他方式使用软件而产生或与之相关。