我打算使用NSAttributedString來使用匹配的用戶搜索查詢來突出部分字符串。但是,我找不到相當於NSBackgroundColorAttributeName
的iOS版本 - 沒有kCTBackgroundColorAttributeName
。這樣的事情是否存在,類似於NSForegroundColorAttributeName
變爲kCTForegroundColorAttributeName
?iOS中的NSAttributedString中NSBackgroundColorAttributeName類似的屬性?
回答
不,核心文本中不存在這樣的屬性,您必須在文本下方繪製自己的矩形來模擬它。
基本上,你必須找出填充字符串中給定範圍的矩形(s)。如果您使用產生CTFrame
的CTFramesetter
進行佈局,則需要使用CTFrameGetLines
和CTFrameGetLineOrigins
來獲得其行和源。
然後迭代線條並使用CTLineGetStringRange
來找出哪些線條是要突出顯示的範圍的一部分。要獲取矩形填充,請使用CTLineGetTypographicBounds
(對於高度)和CTLineGetOffsetForStringIndex
(對於水平偏移和寬度)。
很好的答案。這是一個恥辱一個簡單的屬性是不是要取代所有的代碼。 – kevboh
我的DTCoreText項目支持突出顯示它在Mac上的相同方式。你有一個NSAttributedString的initWithHTMLData方法來獲取表單HTML到歸屬字符串,以及一個視圖類,它可以正確顯示帶有CATextLayer上許多附加功能的屬性字符串。 – Cocoanetics
NSBackgroundColorAttributeName在iOS 6中可用,您可以通過以下方式來使用它:
[_attributedText addAttribute: NSBackgroundColorAttributeName value:[UIColor yellowColor] range:textRange];
[_attributedText drawInRect:rect];
drawInRect:
將支持NSBackgroundColorAttributeName和所有的NS *通過的iOS 6
支持CTFrameDraw AttributeNames()有不支持背景文字顏色。
代碼:
- (void)drawRect:(CGRect)rect {
// First draw selection/marked text, then draw text
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
[_attributedText drawInRect:rect];
CGContextRestoreGState(context);
// CTFrameDraw(_frame, UIGraphicsGetCurrentContext());
}
真棒,感謝您的更新! – kevboh
- 1. Kivy中的類似屬性
- 2. 如何在iOS中設置NSAttributedString中的屬性?
- 3. 更改NSAttributedString中子串的屬性
- 4. 帶UILabel的NSAttributedString(ios 6):使用IB的行高屬性和屬性
- 5. 如何從NSAttributedString swift中刪除屬性?
- 6. 按鈕操作或類似的NSAttributedString
- 7. Swift 3 NSAttributedString多個屬性
- 8. Objective C - NSAttributedString擴展屬性?
- 9. 如何比較NSAttributedString的屬性?
- 10. 如何停止枚舉NSAttributedString的屬性?
- 11. 添加類似的屬性類似孩子的SimpleXML的
- 12. 帶有NSAttributedString的UItextview中字符的屬性範圍?
- 13. iOS中的屬性值Singleton
- 14. 應用屬性中的iOS
- 15. 在Enterprise Architect中顯示類似屬性的相關類
- 16. Castle ActiveRecord類似RowState屬性?
- 17. 在處理中,matplotlib中是否有類似zorder的屬性?
- 18. iOS 10.3.1更新打破了一些NSAttributedString屬性?
- 19. Objective C - 更改NSAttributedString中的所有屬性?
- 20. 如何爲NSAttributedString中的文本設置「隱藏」屬性?
- 21. 將屬性添加到NSAttributedString中的所有表情符號?
- 22. 定義iOS中類擴展屬性
- 23. iOS中的任何類似的BroadcastReceivers?
- 24. nsattributedstring tappable iOS
- 25. 具有類似屬性的NSManagedObjects
- 26. 類似於IndexedParam或IndexedVar的.get()屬性
- 27. MVC ActionFilter類似於WCF的屬性
- 28. C#XmlIgnoreAttribute類似的屬性名稱
- 29. jQuery找到類似的屬性
- 30. WebStorm/PhpStorm警告類似於className的jsx中的反應屬性
看看這有助於http://stackoverflow.com/questions/5424003/changing-background-color-on-nsattributedstring –
感謝,可惜因爲NSAttributedString在CoreText我不佈局我不認爲有什麼我可以改變背景顏色的意見。 – kevboh
@kevboh我寫了一個HighlightLabel(http://github.com/dineshrajas/HighlightLabel)。繼續,如果你還想要它。 –