- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试替换图像链接并显示在 TextView 上
这是我的代码
class ViewController: UIViewController {
let textView: UITextView = {
let view = UITextView()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(textView)
textView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
textView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
textView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
textView.topAnchor.constraint(equalTo: view.topAnchor, constant: 50).isActive = true
let input = "New iPhone \nhttp://cdn2.gsmarena.com/vv/bigpic/apple-iphone-6s1.jpg \nTest Test Test"
imageText(text: input)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func imageText(text:String) {
let attributedString = NSMutableAttributedString(string: text)
let detector = try? NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let matches = detector?.matches(in: text, options: .reportCompletion, range:NSRange(location: 0, length: text.count))
for match in matches! {
if match.url?.absoluteString.suffix(3) == "jpg" {
let textAttachment = NSTextAttachment()
let data = NSData(contentsOf: (match.url!))
if data != nil{
let image = UIImage(data: data! as Data)
textAttachment.image = image
let attributedStringWithImage = NSAttributedString(attachment: textAttachment)
attributedString.replaceCharacters(in: (match.range), with: attributedStringWithImage)
}
}
}
textView.attributedText = attributedString
}
}
它有效:
但是如果我添加第二个链接,它就会崩溃。
let input = "New iPhone \nhttp://cdn2.gsmarena.com/vv/bigpic/apple-iphone-6s1.jpg \nTest Test Test \nhttp://cdn2.gsmarena.com/vv/bigpic/apple-iphone-6s1.jpg \nTest Test Test"
控制台
reason: 'NSMutableRLEArray replaceObjectsInRange:withObject:length:: Out of bounds'
我发现崩溃点是这一行
attributedString.replaceCharacters(in: (match.range), with: attributedStringWithImage)
如何解决这个问题?
最佳答案
事情是:你正在改变这一行中的attributedString
attributedString.replaceCharacters(in: (match.range), with: attributedStringWithImage)
因此,在 for
循环的以下迭代中,您尝试替换的范围不再存在。
关于Swift UIText View 替换字符越界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51241710/
我尝试替换图像链接并显示在 TextView 上 这是我的代码 class ViewController: UIViewController { let textView: UITextVie
致力于用户创建。很简单的想法,电子邮件不能是nil 或空的,password 和confirm password 必须彼此相等,并且password 必须超过 6 个字符。无论出于何种原因,最后一个条
我有一个弹出 View Controller 来更改设置。它从 UIPickerView 更新应用程序中的文本。它工作得很好,但是当我关闭弹出 View Controller 时,文本标签不会刷新。当
我的程序正在使用 map ,我有一个 UITextField,用户可以在其中输入搜索短语,然后 map 将在 map 上显示搜索结果的注释。该程序在模拟器中运行良好,但在我的手机上测试时,如果我输入两
在我的应用程序中,我有一个工作正常的文本字段,但是返回主菜单然后返回带有文本字段的页面后,文本字段变得不可触摸,键盘也不会显示单击它多少次。 这是界面的屏幕截图http://tinypic.com/v
我正在使用 UITextView 来呈现一些文本。我正在使用以下代码将我的主 View 渲染得更大,以将输出设置为更高的分辨率(我还按相同的因子缩放所有 subview )。 UIGraphi
这个问题在这里已经有了答案: Enable UIAlertAction of UIAlertController only after input is validated (6 个答案) 关闭 6
我是一名优秀的程序员,十分优秀!