KILabel 1.0.1

KILabel 1.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2015 年 5 月

Matt Styles维护。




KILabel 1.0.1

一个简单易用的 iOS 7 及以上版本 UILabel 替代品,可突出显示链接(如网址、Twitter 风格的用户名和标签),并使其可触摸。

KILabel Screenshot

如何在项目中使用它

KILabel 没有任何特殊依赖,只需将 KILabel/Source 中的文件包含到您的项目中,然后使用 KILabel 类代替 UILabel。

  1. 下载最新源代码。
  2. 将 KILabel.m 和 KILabel.h 文件添加到您的项目中。
  3. either:-
    • 像通常一样设计用户界面。在 Interface Builder 中,将您想要替换的所有 UILabel 的自定义类设置为 KILabel。标签应遵守所有 IB 设置。或者
    • 在代码中创建 KILabel 对象。

因为也提供了 Podspec,所以可以通过在项目的 Podfile 中添加以下行来使用 KILabel。

pod 'KILabel', '1.0.0'

您还可以使用 Swift 来使用 KILabel。只需将文件编译进您的 XCode 项目中的常规方式,但需要在Objective-C 桥接头中添加以下行。

#import "KILabel.h"

需要注意的事情

  • 要处理链接的点击,请将一个块附加到标签的 Tap 处理器属性之一(请参阅示例代码)。
  • 用户名和标签链接使用标签的 tint 属性进行着色。这可以通过 IB 进行配置。
  • 网址使用 NSLinkAttributeName 属性进行属性化,并相应地显示。
  • 可以使用标签的 textattributedText 属性来设置标签内容。
  • 当使用 attributedText 属性时,KILabel 将尽可能保留原始属性。如果您发现任何问题,请告诉我。
  • 可以通过使用 automaticLinkDetectionEnabled 属性来启用/禁用链接突出显示和交互。
  • 构造函数始终将 userInteractionEnabled 设置为 YES。如果您随后将其设置为 NO,即使 automaticLinkDetectionEnabled 设置为 YES,您也无法与链接进行交互。
  • 使用 linkAtPoint 方法可以找到标签坐标系中的点是否存在链接文本。如果没有在此位置找到链接,则返回 nil,否则返回包含以下键的字典
    • linkType 一个标识链接类型的 KILinkType 值
    • range 一个 NSRange,它给出了标签中链接的范围
    • link 包含链接原始文本的 NSString
  • 使用 linkDetectionTypes 属性通过组合 KILinkTypeOption 位掩码来选择您想要触摸的链接类型。
  • 如果您使用了带有现有链接的属性化文本,将保留它们,但只有当启用 URL 检测时才可触摸,这有助于在幕后保留原始链接的同时手动清理显示的网址。

一点示例代码

下方的代码片段展示了如何设置一个带有触摸处理块的标签。一个更完整的示例可以在存储库中包含的 KILabelDemo 项目中找到。

// Create the label, you can do this in Interface Builder as well
KILabel *label = [[KILabel alloc] initWithFrame:NSRectMake(20, 64, 280, 60)];
label.text = @"Follow @krelborn or visit http://compiledcreations.com #shamelessplug";

// Attach a block to be called when the user taps a user handle
label.userHandleLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
  NSLog(@"User tapped %@", string);
};

// Attach a block to be called when the user taps a hashtag
label.hashtagLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
  NSLog(@"Hashtag tapped %@", string);
};

// Attach a block to be called when the user taps a URL
label.urlLinkTapHandler = ^(KILabel *label, NSString *string, NSRange range) {
  NSLog(@"URL tapped %@", string);
};

[self.view addSubview:label];

KILabel 也支持 Swift。下面是上述示例的 Swift 版本。

// Create the label, you can do this in Interface Builder as well
let label = KILabel(frame: CGRect(x: 20, y: 64, width: 280, height: 60))
label.text = "Follow @krelborn or visit http://compiledcreations.com #shamelessplug"

// Attach a block to be called when the user taps a user handle
label.userHandleLinkTapHandler = { label, handle, range in
  NSLog("User handle \(handle) tapped")
}

// Attach a block to be called when the user taps a hashtag
label.hashtagLinkTapHandler = { label, hashtag, range in
  NSLog("Hashtah \(hashtag) tapped")
}

// Attach a block to be called when the user taps a URL
label.urlLinkTapHandler = { label, url, range in
  NSLog("URL \(url) tapped")
}

view.addSubview(label)

演示

存储库包含一个名为 KILabelDemo 的 Objective-C 项目,它展示了在 storyboarding 中使用标签的简单示例,并提供了实现可触摸链接的示例。

演示还演示了如何使用手势识别器与标签配合使用,以实现对链接的长按功能,这一功能使用了 linkAtPoint 方法。

还有一个示例,使用了UITableView,其中单元格的动态高度取决于内容。

许可 & 致谢

KILabel 在 MIT 许可下可用。

KILabel 受 STTweetLabel (http://github.com/SebastienThiebaud) 以及其他人如 NimbusAttributedLabel (http://latest.docs.nimbuskit.info/NimbusAttributedLabel.html) 的启发。如果 KILabel 不能满足您的需求,可能他们可以。

联系

打开一个问题来报告错误或请求功能。

其他反馈也欢迎通过明显的渠道。