yytextview 复制_Swift iOS : YYText显示微博@文字的方法
广告
正文
第三方库YYText可以完成富文本的输入,如果需要创建类似微博@一样的输入UI,可以使用它的YYTextView组件。具体说:
当内容中有@打头的文字,可以分析出来,并以不同的颜色显示
当删除时,可以把@文字整体删除
首先需要引用YYText,我们的Podfile:
platform:ios,'9.0'
inhibit_all_warnings!
use_frameworks!
def pods
pod 'YYText', '~> 1.0.7'
end
target 'V2ex-Swift' do
pods
end复制代码
执行:
pod install --verbose --no-repo-update复制代码
代码如下:
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow(frame: UIScreen.main.bounds)
let page = Page()
self.window!.rootViewController = page
self.window?.makeKeyAndVisible()
return true
}
}
import YYText
class AtParser: NSObject ,YYTextParser{
var regex:NSRegularExpression
override init() {
self.regex = try! NSRegularExpression(pattern: "@(\\S+)\\s", options: [.caseInsensitive])
super.init()
}
func parseText(_ text: NSMutableAttributedString?, selectedRange: NSRangePointer?) -> Bool {
guard let text = text else {
return false;
}
self.regex.enumerateMatches(in: text.string, options: [.withoutAnchoringBounds], range: text.yy_rangeOfAll()) { (result, flags, stop) -> Void in
if let result = result {
let range = result.range
if range.location == NSNotFound || range.length < 1 {
return ;
}
if text.attribute(YYTextBindingAttributeName, at: range.location, effectiveRange: nil) != nil {
return ;
}
let bindlingRange = NSMakeRange(range.location, range.length-1)
let binding = YYTextBinding()
binding.deleteConfirm = true ;
text.yy_setTextBinding(binding, range: bindlingRange)
text.yy_setColor(.blue, range: bindlingRange)
}
}
return false;
}
}
class Page: UIViewController ,YYTextViewDelegate {
var textView:TextView?
override func viewDidLoad() {
super.viewDidLoad()
self.textView = TextView()
self.textView!.frame = view.frame
self.textView!.delegate = self
self.view.addSubview(self.textView!)
}
}
class TextView :YYTextView{
override func layoutSubviews() {
backgroundColor = .yellow
scrollsToTop = false
text = "\n\n\n42 empty lines removed by @someone ,"
textColor = .red
textParser = AtParser()
}
}复制代码
执行后,可以发现:
默认输入的文字中,@打头的为蓝色文字,其他为红色
当自己输入文字是,@打头的为蓝色文字,其他为红色
当删除时,文字会把背景色套住,再次按删除按钮时才会真的删除
代码中需要说的是YYTextParser,它可以创建实例,赋值给YYTextView.textParser,这样就可以使用它分析当前的输入文字,如果正则表达式匹配成功,就可以为这截文字赋予不同的颜色或者其他什么操作,以便显示它和其他文字的不同。
yytextview 复制_Swift iOS : YYText显示微博@文字的方法相关推荐
- 关于PPT嵌入对象文件图标显示为文字的方法(比如将系统图标换成文字)
在做课件时,往往需要将其他文件链接到当前PPT中,比如数学中的解题步骤做在另外一个文件中,点击"解一""解二"时才显示该解题过程. 如图 在编辑好解题过程文件后 ...
- 在Word2010文档中设置和显示隐藏文字
用户在使用Word2010编辑文档的过程中,常常需要将Word文档中的特定文字设置为隐藏文字,以实现保密效果.本篇教程介绍在Word2010文档中设置和显示隐藏文字的方法. 1.设置隐藏文字 用户可以 ...
- iOS YYText的使用笔记一(YYTextView图文编辑器)
YYText是强大的YYKit的一部分可以单独下载 Github地址 : https://github.com/ibireme/YYText Powerful text framework fo ...
- IOS低版本无法显示渐变色文字问题,iso不兼容渐变色文字问题
今天遇到一个兼容性问题,iso,12,13一下部分机型无法显示渐变色文字,正常手机显示如下: ISO如下: 解决办法如下,你可以理解为兼容性问题,但是兼容性写法不一样可以解决: 如果兼容性写法无法解决 ...
- yytextview多种格式_iOS YYText的使用笔记一(YYTextView图文编辑器)
YYText是强大的YYKit的一部分可以单独下载 Powerful text framework for iOS to display and edit rich text. (It's a com ...
- vb.net textbox如何输入的时候显示提示文字_如何快速上手CAD?这15种教课书式的ideas请你收下...
CAD也疯狂 无论你是多优秀的设计师,也不管你有多少年的工作经验,在使用CAD的过程当中总会遇到各种各样的困难.还好方法总比困难多,当我们提前对这些困难有了一定的了解,再遇到这种困难后就能有一定的对策 ...
- react native 处理iOS和安卓系统文字
非常简单的几步 让 react native app不随系统文字变化的处理 ios 处理方法如下 : 新增addCustomProps.js (位置随意放到项目目录, 只要路径引用的到) 下面是 ad ...
- iOS开发之段落文字排版的属性与细节
在手持式行动装置中,被限制住的显示屏幕空间,使得我们必须花费更多的时间与功夫来处理文字内容的安排,舒适的行距.间距以及字号,这些需要不断调整的细节,会大大影响内容的阅读性与程序的使用性. 在简单介绍 ...
- css鼠标点在文字上背景透明,CSS实现文字半透明显示在图片上方法(示例代码)
CSS实现文字半透明显示在图片上方法 在css中文字半透明我们会需要使用滤镜效果也就是css中的filter:alpha来实现了,下面来看两个文字显示在图片上并且半透明的例子. CSS让一行文字显示在 ...
- flutter在IOS上显示英文
flutter在IOS上显示英文 背景 公司现在正在用纯Flutter作项目.今天测试的妹纸发现在IOS手机上长按文字,弹出的提示框显示的是英文. 我们在用国外的一些Flutter Plugin的时候 ...
最新文章
- 2015-12-08 English
- HDU 2066 一个人的旅行
- linux和windows文件名称长度限制
- P1829 [国家集训队]Crash的数字表格(推了好久的mobius反演)
- 洛谷 P2921 在农场万圣节Trick or Treat on the Farm题解
- linux的usermod命令参数,linux usermod命令参数及用法详解
- nginx+kibana代理以及简单认证
- 什么是无卡支付、快捷支付、通用代扣?他们有什么区别?
- 国仁老猫:新人怎么做好一场直播带货;首先需要明白以下几点即可。
- android-第一行代码-第六章数据储存——持久化技术 含MMKV和Room新知识点(温故而知新)学习记录
- 5.2 差模信号、共模信号、共模抑制比
- STM32--ADC
- scp时提示【Read-only file system】的解决方案
- IPv4如何向IPv6过渡?IPv6改造方案有哪些?
- 计蒜客--蒜头君回家
- 够壕!支付宝新楼“蚂蚁Z空间”启用 网友:公司缺人吗
- 软件测试的方法一共有几种
- 卷积神经网络(CNN)相关知识以及数学推导
- 什么是gpt一4-如何用上gpt-4
- mysql级联删除报1451 - Cannot delete or update a parent row: a foreign key constrain