我有一个字符串,字符串的末尾没有空格,但是当我转换为NSAttributedString
并将其设置为UITextView
时,在UILabel
的末尾看到了一些空格。
为了制作NSAttributedString
,我使用以下代码。在我的代码中,expectedLabelSize
具有很大的高度。
UILabel *tempLbl = [[UILabel alloc]init];
tempLbl.font = txtView.font;
tempLbl.text = string;
NSDictionary *dictAttributes = [NSDictionary dictionaryWithObjectsAndKeys: tempLbl.font, NSFontAttributeName, aParaStyle, NSParagraphStyleAttributeName,[UIColor darkGrayColor],NSForegroundColorAttributeName, nil];
CGSize expectedLabelSize = [string boundingRectWithSize:maximumLabelSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dictAttributes context: nil].size;
最佳答案
快速答案,但是如果您将其翻译成Obj-C,则可以快速入门(或者制作一个带有扩展名的swift文件,然后在Obj-C中使用)
extension NSMutableAttributedString {
func trimmedAttributedString(set: CharacterSet) -> NSMutableAttributedString {
let invertedSet = set.inverted
var range = (string as NSString).rangeOfCharacter(from: invertedSet)
let loc = range.length > 0 ? range.location : 0
range = (string as NSString).rangeOfCharacter(
from: invertedSet, options: .backwards)
let len = (range.length > 0 ? NSMaxRange(range) : string.characters.count) - loc
let r = self.attributedSubstring(from: NSMakeRange(loc, len))
return NSMutableAttributedString(attributedString: r)
}
}
用法 :
let noSpaceAttributedString =
attributedString.trimmedAttributedString(set: CharacterSet.whitespacesAndNewlines)