私はString
とNSTextAttachment
の混合でNSAttributedString
を持っています。どのようにして[AnyObject]
の部品の配列を抽出できますか?NSAttributedStringはイメージと文字列を部分的に取得します
-2
A
答えて
1
attributedString
をすべて繰り返し、オブジェクトにNSTextAttachmentAttributeName
プロパティがあるかどうかを調べることができました。そうでなければ、文字列であると仮定します。
extension UITextView {
func getParts() -> [AnyObject] {
var parts = [AnyObject]()
let attributedString = self.attributedText
let range = NSMakeRange(0, attributedString.length)
attributedString.enumerateAttributesInRange(range, options: NSAttributedStringEnumerationOptions(rawValue: 0)) { (object, range, stop) in
if object.keys.contains(NSAttachmentAttributeName) {
if let attachment = object[NSAttachmentAttributeName] as? NSTextAttachment {
if let image = attachment.image {
parts.append(image)
}else if let image = attachment.imageForBounds(attachment.bounds, textContainer: nil, characterIndex: range.location) {
parts.append(image)
}
}
}else {
let stringValue : String = attributedString.attributedSubstringFromRange(range).string
if !stringValue.isEmptyOrWhitespace() {
parts.append(stringValue)
}
}
}
return parts
}
}
0
これはスウィフト4で私のために働い:
extension UITextView {
func getParts() -> [AnyObject] {
var parts = [AnyObject]()
let attributedString = self.attributedText
let range = NSMakeRange(0, attributedString.length)
attributedString.enumerateAttributes(in: range, options: NSAttributedString.EnumerationOptions(rawValue: 0)) { (object, range, stop) in
if object.keys.contains(NSAttributedStringKey.attachment) {
if let attachment = object[NSAttributedStringKey.attachment] as? NSTextAttachment {
if let image = attachment.image {
parts.append(image)
} else if let image = attachment.image(forBounds: attachment.bounds, textContainer: nil, characterIndex: range.location) {
parts.append(image)
}
}
} else {
let stringValue : String = attributedString.attributedSubstring(from: range).string
if (!stringValue.trimmingCharacters(in: .whitespaces).isEmpty) {
parts.append(stringValue as AnyObject)
}
}
}
return parts
}
関連する問題
- 1. PowerShell Regexは2文字列の部分文字列を取得します
- 2. Python regexは、前の部分文字列の一致後に部分文字列を取得します。
- 3. C++はインデックス付きの文字列の部分文字列を効率的に取得します
- 4. 部分文字列のインデックスを取得
- 5. Liquidの文字列から部分文字列を取得しますか?
- 6. Pythonリストの文字列間の部分文字列を取得
- 7. C#で部分文字列を取得していますか?
- 8. zkで部分文字列を取得するには?
- 9. 文字列と部分文字列とメイン文字列に含まれる部分文字列の数
- 10. 文字列から繰り返し部分文字列を取得する
- 11. iOSのNSAttributedStringからHTML文字列を取得する方法
- 12. は、部分文字列を取得し、変数
- 13. 文字列内にある部分文字列の位置を取得する
- 14. JavaScriptの文字列の部分文字列を取得できません
- 15. 2つの部分文字列の間で部分文字列を取得する方法は?
- 16. 文字列にmysqlの部分文字列が含まれている場合、文字列から部分文字列を取得する
- 17. 少しの操作で部分文字列を取得する
- 18. Pythonで連続した部分文字列を取得する
- 19. 部分文字列を取得する最適な方法は?
- 20. jQueryの部分文字列の先頭と末尾部分文字列を持つ文字列から部分を取得
- 21. メッセージの部分文字列の部分文字列の部分文字列
- 22. preg_match_all - パターンと文字列の間の部分を取得
- 23. RegExを使用して部分文字列を取得
- 24. JavaScriptの文字列から部分文字列をパターンで取得する
- 25. 文字列から部分文字列を複数回取得する
- 26. mysqlの文字列から部分文字列を取得する方法
- 27. JavaScript内の文字列のすべての部分文字列を取得
- 28. 大きな文字列から部分文字列を取得するR
- 29. 文字列の特定の部分文字列を取得する
- 30. UILabelはテキストの部分文字列のCGRectを取得します