在別的地方看到的辛藻,用swift重寫了一下吱肌。僅僅是為了練手仰禽,方便以后查看(好吧纺蛆,方便以后復(fù)制粘貼)??
這里只給出了幾個樣例勇边,其它的根據(jù)文檔類推了;相關(guān)key
的位置NSAttributedString.h
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = UIColor.white
self.title = "Bear"
testLabel = UILabel.init(frame: CGRect.init(x: 10, y: 100, width: self.view.bounds.width-20, height: self.view.bounds.height-200))
let text:String = "途牛旅游網(wǎng)于2006年10月創(chuàng)立于南京,以“讓旅游更簡單”為使命奕坟,為消費(fèi)者提供由北京清笨、天津、上海苛萎、廣州检号、深圳、南京等64個城市出發(fā)的旅游產(chǎn)品預(yù)訂服務(wù)翘盖,產(chǎn)品全面凹蜂,價(jià)格透明,全年365天24小時(shí)400電話預(yù)訂汰瘫,并提供豐富的后續(xù)服務(wù)和保障擂煞。\n 途牛旅游網(wǎng)提供8萬余種旅游產(chǎn)品供消費(fèi)者選擇颈娜,涵蓋跟團(tuán)、自助官辽、自駕同仆、郵輪、酒店、簽證市怎、景區(qū)門票以及公司旅游等辛慰,已成功服務(wù)累計(jì)超過400萬人次出游帅腌。2014年12月15日,途牛旅游網(wǎng)宣布與弘毅投資速客、京東商城溺职、攜程旗下子公司“攜程投資”以及途牛首席執(zhí)行官與首席運(yùn)營官簽訂股權(quán)認(rèn)購協(xié)議。根據(jù)協(xié)議途牛將向上述投資者出售1.48億美元的新發(fā)行股份浪耘。[1]\n 2015年11月24日点待,途牛旅游網(wǎng)與海航旅游集團(tuán)共同宣布戰(zhàn)略結(jié)盟。海航旅游戰(zhàn)略投資途牛5億美元状原,雙方將利用各自優(yōu)質(zhì)資源苗踪,在線上旅游、航空毕莱、酒店服務(wù)等領(lǐng)域開展深度合作颅夺。[2]易觀報(bào)告顯示,2015年第3季度部服,途牛交易規(guī)模達(dá)到46.5億元人民幣拗慨,同比增長141.1%奉芦。這已是途牛連續(xù)三個季度同比增速超過三位數(shù):2015年第二季度時(shí)剧蹂,途牛交易規(guī)模同比增長135.3%宠叼;第一季度,這一數(shù)據(jù)為122.8%筹裕。\n 從增速來看窄驹,途牛再度蟬聯(lián)行業(yè)第一证逻。[3]以全年業(yè)績來看,途牛2015年的凈收入為76億元人民幣(合11.802億美元)丈咐,較2014年增長116.3%龙宏。收入增長主要來自于跟團(tuán)游银酗、自助游及其他收入的增長。2015年總出游人次為4449053蛙讥,較2014年的2181834人次增長103.9%灭衷。[4]adfasdfadf"
let stringLen = text.characters.count
let attrString = NSMutableAttributedString(string: text)
//設(shè)置字體
let attrFont = UIFont.systemFont(ofSize: 13.0)
attrString.addAttribute(NSFontAttributeName, value: attrFont, range: NSRange(location: 0, length: stringLen))
//設(shè)置傾斜,需要導(dǎo)入coreText
//FIXME: 字母迫像,數(shù)據(jù)瞳遍,符號出現(xiàn)傾斜傅蹂,而漢字沒有影響
let italicFont = self.GetVariationOfFontWithTrait(baseFont: attrFont, trait: .traitItalic)
attrString.addAttribute(NSFontAttributeName, value: italicFont, range: NSRange(location: 0, length: stringLen))
// 設(shè)置顏色:字體顏色算凿,背景顏色
attrString.addAttribute(NSForegroundColorAttributeName, value:UIColor.red, range:NSString(string:text).range(of: "途牛"))
attrString.addAttribute(NSBackgroundColorAttributeName, value:UIColor.blue, range:NSString(string:text).range(of: "南京"))
//段落樣式
let style:NSMutableParagraphStyle = NSParagraphStyle.default.mutableCopy() as! NSMutableParagraphStyle
style.lineSpacing = 10;//增加行高
style.headIndent = 10;//頭部縮進(jìn)犁功,相當(dāng)于左padding
style.tailIndent = -10;//相當(dāng)于右padding
style.lineHeightMultiple = 1.5;//行間距是多少倍
style.alignment = .left;//對齊方式
style.firstLineHeadIndent = 20;//首行頭縮進(jìn)
style.paragraphSpacing = 10;//段落后面的間距
style.paragraphSpacingBefore = 20;//段落之前的間距
attrString.addAttribute(NSParagraphStyleAttributeName, value:style, range:NSMakeRange(0, stringLen))
testLabel.attributedText = attrString
testLabel.numberOfLines = 0
self.view.addSubview(testLabel)
}
//獲取斜體
func GetVariationOfFontWithTrait(baseFont:UIFont, trait:CTFontSymbolicTraits)->UIFont {
let fontSize:CGFloat = baseFont.pointSize
let baseFontName:CFString = baseFont.fontName as CFString
let baseCTFont:CTFont = CTFontCreateWithName(baseFontName, fontSize, nil)
let ctFont:CTFont = CTFontCreateCopyWithSymbolicTraits(baseCTFont, 0, nil, trait, trait)!
let variantFontName:NSString = CTFontCopyName(ctFont, kCTFontPostScriptNameKey)!
let variantFont:UIFont = UIFont.init(name:variantFontName as String, size: fontSize)!
return variantFont;
};
NSString+RichTextCategory
/**
* 計(jì)算富文本字體高度
*
* @param lineSpeace 行高
* @param font 字體
* @param width 字體所占寬度
*
* @return 富文本高度
*/
-(CGFloat)getSpaceLabelHeightwithSpeace:(CGFloat)lineSpeace withFont:(UIFont*)font withWidth:(CGFloat)width {
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
// paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
/** 行高 */
paraStyle.lineSpacing = lineSpeace;
// NSKernAttributeName字體間距
NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f
};
CGSize size = [self boundingRectWithSize:CGSizeMake(width,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
return size.height;
}
/**
* 設(shè)置段落樣式
*
* @param lineSpacing 行高
* @param textcolor 字體顏色
* @param font 字體
*
* @return 富文本
*/
-(NSAttributedString *)stringWithParagraphlineSpeace:(CGFloat)lineSpacing
textColor:(UIColor *)textcolor
textFont:(UIFont *)font {
// 設(shè)置段落
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = lineSpacing;
// NSKernAttributeName字體間距
NSDictionary *attributes = @{ NSParagraphStyleAttributeName:paragraphStyle,NSKernAttributeName:@1.5f};
NSMutableAttributedString * attriStr = [[NSMutableAttributedString alloc] initWithString:self attributes:attributes];
// 創(chuàng)建文字屬性
NSDictionary * attriBute = @{NSForegroundColorAttributeName:textcolor,NSFontAttributeName:font};
[attriStr addAttributes:attriBute range:NSMakeRange(0, self.length)];
return attriStr;
}
計(jì)算attributeText的寬高用上面的方法有時(shí)會不準(zhǔn)~!so,2333
NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc]initWithString:@"hello YYLabel"];
YYTextContainer *container = [YYTextContainer containerWithSize:CGSizeMake(maxSize.width, MAXFLOAT)];
YYTextLayout *textLayout = [YYTextLayout layoutWithContainer:container text:attrString];
CGSize size =textLayout.textBoundingSize;