iOS中關(guān)于AttributedString的那些事兒

一位谋、關(guān)于AttributedString

在iOS開(kāi)發(fā)過(guò)程中系統(tǒng)簡(jiǎn)單的封裝工具已經(jīng)不夠我們使用,為了更好的開(kāi)發(fā),蘋(píng)果公司為開(kāi)發(fā)者提供了一套豐富的API供開(kāi)發(fā)者們使用抹凳。其中開(kāi)發(fā)過(guò)程中使用最多的就是AttributedString了吧诬滩,AttributedString與NSString類(lèi)似霹粥,在iOS中AttributedString也分為NSAttributedString和NSMutableAttributedString,不同的是,AttributedString對(duì)象多了一個(gè)Attribute的概念驾锰,一個(gè)AttributedString的對(duì)象包含很多的屬性狂窑,每一個(gè)屬性都有其對(duì)應(yīng)的字符區(qū)域,使用NSRange來(lái)進(jìn)行描述浩淘。下面簡(jiǎn)單講解一下AttributedString的屬性及用法捌朴。
官方學(xué)習(xí)鏈接Attributed String Programming Guide

  • 1.方式一:

    首先初始化一個(gè)NSMutableAttributedString,然后向里面添加文字樣式张抄,最后將它賦給控件的AttributedText砂蔽,該方法適合于文本較少而又需要分段精細(xì)控制的情況。

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是第一種方式署惯,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"];
 [attrStr addAttribute: NSFontAttributeName value: [UIFont fontWithName: @"Papyrus" size: 15] range: NSMakeRange(0, attrStr.length)];
  NSMutableParagraphStyle * style = [[NSMutableParagraphStyle alloc] init];
  style.lineSpacing = 5.0;
  [attrStr addAttribute: NSParagraphStyleAttributeName value: style range: NSMakeRange(0, attrStr.length)];
  self.firstLabel.attributedText = attrStr;
  • 2.方式二:

首先創(chuàng)建屬性字典左驾,初始化各種屬性,然后和需要控制的文本一起創(chuàng)建并賦值給控件的AttributedText极谊,該方法適合于需要控制的文本較多整體控制的情況诡右,通常是從文件中讀取的大段文本控制。

   //第二種方式
   NSDictionary * dict = @{NSFontAttributeName:[UIFont fontWithName: @"Papyrus" size: 15], [UIFont fontWithName: @"Papyrus" size: 15]:style  };
   NSMutableAttributedString * attrStr2 = [[NSMutableAttributedString alloc] initWithString:@"我是第二種方式轻猖,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈" attributes:dict];
   self.secondLabel.attributedText = attrStr2;
1.png

二 帆吻、 AttributedString究竟可以設(shè)置哪些屬性

    1. NSFontAttributeName

設(shè)置字體屬性,默認(rèn)值:字體:Helvetica(Neue) 字號(hào):12
獲取系統(tǒng)的字體:[UIFont familyNames]

   NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSFontAttributeName 字體:Papyrus 字號(hào):15"];
   [attrStr addAttribute: NSFontAttributeName value: [UIFont fontWithName: @"Papyrus" size: 15] range: NSMakeRange(0, attrStr.length)];
2.1.png
  • NSParagraphStyleAttributeName(后面具體講解)

該屬性所對(duì)應(yīng)的值是一個(gè) NSParagraphStyle/NSMutableParagraphStyle 對(duì)象咙边。該屬性在一段文本上應(yīng)用多個(gè)屬性猜煮。

  NSMutableParagraphStyle * style = [[NSMutableParagraphStyle alloc] init];
   style.lineSpacing = 10.0;
   NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSParagraphStyleAttributeName \\\\\\\\\\\\\\\\n行間距 10"];
     [attrStr addAttribute: NSParagraphStyleAttributeName value: style range: NSMakeRange(0, attrStr.length)];
2.2.png
  • NSForegroundColorAttributeName

設(shè)置字體顏色,取值為 UIColor對(duì)象样眠,默認(rèn)值為黑色

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSForegroundColorAttributeName 顏色orangeColor"];
 [attrStr addAttribute: NSForegroundColorAttributeName value: [UIColor orangeColor] range: NSMakeRange(0, attrStr.length)];
2.3.png
  • NSBackgroundColorAttributeName

設(shè)置字體所在區(qū)域背景顏色友瘤,取值為 UIColor對(duì)象,默認(rèn)值為nil, 透明色

    NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSBackgroundColorAttributeName 背景顏色red"];
    [attrStr addAttribute: NSBackgroundColorAttributeName value: [UIColor redColor] range: NSMakeRange(0, attrStr.length)];
2.4.png
  • NSLigatureAttributeName

設(shè)置連體屬性檐束,取值為NSNumber 對(duì)象(整數(shù))辫秧,0 表示沒(méi)有連體字符,1 表示使用默認(rèn)的連體字符被丧。2 表示使用所有連體符號(hào)盟戏。默認(rèn)值為 1(注意,iOS 不支持值為 2)如下圖'f' 'l'的連接

 NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSLigatureAttributeName 'fl' 連體屬性 0"];
  [attrStr addAttribute: NSFontAttributeName value: [UIFont fontWithName: @"PingFang SC" size: 15] range: NSMakeRange(0, attrStr.length)];
   [attrStr addAttribute: NSLigatureAttributeName value: @(0) range: NSMakeRange(0, attrStr.length)];
![2.5.2.png](http://upload-images.jianshu.io/upload_images/1429107-c9ad3521232a48d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
  • NSKernAttributeName

設(shè)定字符間距甥桂,取值為 NSNumber 對(duì)象(整數(shù))柿究,正值間距加寬,負(fù)值間距變窄黄选。

 NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSKernAttributeName  字符間距 2"];
 [attrStr addAttribute: NSKernAttributeName value: @(2) range: NSMakeRange(0, attrStr.length)];
2.6.png
  • NSStrikethroughStyleAttributeName

設(shè)置刪除線蝇摸,取值為 NSNumber 對(duì)象(整數(shù))

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSStrikethroughStyleAttributeName  刪除線 1"];
 [attrStr addAttribute: NSStrikethroughStyleAttributeName value: @(1) range: NSMakeRange(0, attrStr.length)];
2.7.png
  • NSUnderlineStyleAttributeName

設(shè)置下劃線,取值為 NSNumber 對(duì)象(整數(shù))办陷,枚舉常量 NSUnderlineStyle中的值貌夕。默認(rèn)值是NSUnderlineStyleNone。


2.8.png
  • NSStrokeColorAttributeName

設(shè)置填充顏色民镜。取值為 UIColor 對(duì)象,需要和NSStrokeWidthAttributeName設(shè)置描邊寬度啡专,這樣就能使文字產(chǎn)生鏤空效果。

 NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSStrokeColorAttributeName 配合NSStrokeWidthAttributeName使用"];
 [attrStr addAttribute: NSStrokeColorAttributeName value: [UIColor redColor] range: NSMakeRange(0, attrStr.length)];
 [attrStr addAttribute: NSStrokeWidthAttributeName value: @(2) range: NSMakeRange(0, attrStr.length)];
2.9.png
  • NSStrokeWidthAttributeName

設(shè)置筆畫(huà)寬度制圈,取值為 NSNumber 對(duì)象(整數(shù))们童,負(fù)值填充效果畔况,正值中空效果。與NSStrokeColorAttributeName配合使用

 NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSStrokeWidthAttributeName 配合NSStrokeColorAttributeName使用"];
 [attrStr addAttribute: NSStrokeWidthAttributeName value: @(-2) range: NSMakeRange(0, attrStr.length)];
  [attrStr addAttribute: NSStrokeColorAttributeName value: [UIColor blueColor] range: NSMakeRange(0, attrStr.length)];
2.10.png
  • NSShadowAttributeName

設(shè)置陰影屬性慧库,取值為 NSShadow 對(duì)象跷跪。默認(rèn)為 nil。

NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSShadowAttributeName 豎直方向偏移 15"];
 NSShadow * shadow = [[NSShadow alloc] init];
 shadow.shadowColor = [UIColor grayColor];
shadow.shadowOffset = CGSizeMake(0, 15);
 [attrStr addAttribute: NSShadowAttributeName value:shadow range: NSMakeRange(0, attrStr.length)];
2.11.png
  • NSTextEffectAttributeName

設(shè)置文本特殊效果完沪,取值為 NSString 對(duì)象域庇,目前只有圖版印刷效果可用NSTextEffectLetterpressStyle嵌戈。

  NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSTextEffectAttributeName 模式NSTextEffectLetterpressStyle"];
 [attrStr addAttribute: NSTextEffectAttributeName value:NSTextEffectLetterpressStyle range: NSMakeRange(0, attrStr.length)];
2.12.png
  • NSAttachmentAttributeName

設(shè)置文本附件,取值為NSTextAttachment對(duì)象,常用于文字圖片混排

  NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSAttachmentAttributeName "];
   NSTextAttachment * textAtt = [[NSTextAttachment alloc] init];
   textAtt.image = [UIImage imageNamed:@"tag_d"];
    textAtt.bounds = CGRectMake(0, 0, 44, 44);
    NSAttributedString *attrStr2 = [NSAttributedString attributedStringWithAttachment: textAtt];
    [attrStr insertAttributedString: attrStr2 atIndex: 6];
2.13.png
  • NSLinkAttributeName

設(shè)置鏈接屬性覆积,對(duì)象是NSURL點(diǎn)擊后調(diào)用瀏覽器打開(kāi)指定URL地址
推薦一款非常好用的輪子 TTTAttributedLabel
UITextView *textView = [[UITextView alloc] init];
textView.scrollEnabled = NO;
textView.editable = NO;
textView.frame =cell.bounds;
textView.textContainer.lineFragmentPadding = 0;
textView.textContainerInset = UIEdgeInsetsMake(0, 0, 0, 0);
textView.delegate = self;
attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSLinkAttributeName 測(cè)試 百度"];
[attrStr addAttribute: NSLinkAttributeName value:[NSURL URLWithString: @"http://www.baidu.com"] range: NSMakeRange(0, attrStr.length)];
textView.attributedText = attrStr;

  • NSBaselineOffsetAttributeName

設(shè)置基線偏移值,取值為 NSNumber (float),正值上偏熟呛,負(fù)值下偏

NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSBaselineOffsetAttributeName 偏移5"];
 [attrStr addAttribute: NSBaselineOffsetAttributeName value: @(5) range: NSMakeRange(0, attrStr.length)];
2.15.png
  • NSUnderlineColorAttributeName

設(shè)置下劃線顏色宽档,取值為 UIColor 對(duì)象,默認(rèn)值為黑色

NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSUnderlineColorAttributeName "];
[attrStr addAttribute: NSUnderlineStyleAttributeName value:@(NSUnderlineStyleSingle) range: NSMakeRange(0, attrStr.length)];
 [attrStr addAttribute: NSUnderlineColorAttributeName value:[UIColor yellowColor] range: NSMakeRange(0, attrStr.length)];
2.16.png
  • NSStrikethroughColorAttributeName

設(shè)置刪除線顏色庵朝,取值為 UIColor 對(duì)象吗冤,默認(rèn)值為黑色

NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSStrikethroughColorAttributeName "];
  [attrStr addAttribute: NSStrikethroughStyleAttributeName value:@(1) range: NSMakeRange(0, attrStr.length)];
 [attrStr addAttribute: NSStrikethroughColorAttributeName value:[UIColor brownColor] range: NSMakeRange(0, attrStr.length)];
2.17.png
  • NSObliquenessAttributeName

設(shè)置字形傾斜度,取值為 NSNumber (float),正值右傾九府,負(fù)值左傾

 NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSStrikethroughColorAttributeName 右傾斜"];
  [attrStr addAttribute: NSObliquenessAttributeName value:@(1) range: NSMakeRange(0, attrStr.length)];
2.18.png
  • NSExpansionAttributeName

設(shè)置文本橫向拉伸屬性椎瘟,取值為 NSNumber (float),正值橫向拉伸文本,負(fù)值橫向壓縮

   NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSExpansionAttributeName 橫向壓"];
   [attrStr addAttribute: NSFontAttributeName value: [UIFont fontWithName: @"Papyrus" size: 12] range: NSMakeRange(0, attrStr.length)];
  [attrStr addAttribute: NSExpansionAttributeName value:@(1) range: NSMakeRange(0, attrStr.length)];
2.19.png
  • NSWritingDirectionAttributeName

設(shè)置文字書(shū)寫(xiě)方向侄旬,取值為以下組合

@[@(NSWritingDirectionLeftToRight|NSWritingDirectionEmbedding)];  
    @[@(NSWritingDirectionRightToLeft|NSWritingDirectionEmbedding)];   
    @[@(NSWritingDirectionLeftToRight|NSWritingDirectionOverride)];
     @[@(NSWritingDirectionRightToLeft|NSWritingDirectionOverride)];
NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSWritingDirectionAttributeName 方式NSWritingDirectionLeftToRight&Embedding"];
 [attrStr addAttribute: NSWritingDirectionAttributeName value:@[@(NSWritingDirectionLeftToRight | NSWritingDirectionEmbedding)] range: NSMakeRange(0, attrStr.length)];
2.20.png
  • NSVerticalGlyphFormAttributeName

文本方向肺蔚,取值為 NSNumber 對(duì)象(整數(shù))。0 表示橫排文本儡羔。1 表示豎排文本宣羊。在 iOS 中,總是使用橫排文本汰蜘,0 以外的值都未定義仇冯。

 NSAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:@"我是NSVerticalGlyphFormAttributeName "];
 [attrStr addAttribute: NSVerticalGlyphFormAttributeName value:@(0) range: NSMakeRange(0, attrStr.length)];
2.21.png
  • NSDocumentTypeDocumentAttribute

直接進(jìn)行 html 的展示

NSString * htmlString = @"<html><body> Some html string \n <font size=\"13\" color=\"red\">This is some text!This is some text!This is some text!This is some text!This is some text!</font> </body></html>";
 attrStr = [[NSMutableAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
22.png

三、關(guān)于計(jì)算

1 .在7.0以后官方計(jì)算的API

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

參數(shù)
size:
寬高限制族操,用于計(jì)算文本繪制時(shí)占據(jù)的矩形塊苛坚。
options:
文本繪制時(shí)的附加選項(xiàng)∩眩可能取值請(qǐng)參考“NSStringDrawingOptions”泼舱。
attributes:
文本繪制時(shí)用到的AttributedString的屬性,就是文中提到的20幾種莱预。
context:
context上下文柠掂。包括一些信息,例如如何調(diào)整字間距以及縮放依沮。最終涯贞,該對(duì)象包含的信息將用于文本繪制枪狂。該參數(shù)一般為 nil 。
返回值:
一個(gè)矩形宋渔,大小等于文本繪制完將占據(jù)的寬和高州疾。
具體計(jì)算方式,example

-(CGFloat)getSpaceLabelHeight:(NSString*)str withFont:(UIFont*)font withWidth:(CGFloat)width
{
    NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
    paraStyle.alignment = NSTextAlignmentLeft;
    paraStyle.lineSpacing = 4;
    NSDictionary *dic = @{NSFontAttributeName:font, NSParagraphStyleAttributeName:paraStyle
                          };
    
    CGSize size = [str boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
    return size.height;
}

2 .計(jì)算真實(shí)的大小,sizeThatFits

- (CGSize)sizeThatFits:(CGSize)size;     // return 'best' size to fit given size. does not actually resize view. Default is return existing view size

3 . 自適應(yīng)皇拣,sizeToFit

- (void)sizeToFit;                       // calls sizeThatFits: with current view bounds and changes bounds size.

視具體情況而定严蓖,靈活應(yīng)用上面三種方式計(jì)算即可,滿足絕大多數(shù)需求氧急。

:NSParagraphStyle的屬性參考

屬性 解讀
lineSpacing CGFloat類(lèi)型颗胡,行距
paragraphSpacing CGFloat類(lèi)型,段距
alignment NSTextAlignment吩坝,對(duì)齊方式
firstLineHeadIndent CGFloat類(lèi)型毒姨,首行縮進(jìn)
headIndent CGFloat類(lèi)型,縮進(jìn)
tailIndent CGFloat類(lèi)型钉寝,尾部縮進(jìn)
lineBreakMode CGFloat類(lèi)型弧呐,斷行方式
minimumLineHeight CGFloat類(lèi)型,最小行高
maximumLineHeight CGFloat類(lèi)型嵌纲,最大行高
baseWritingDirection NSWritingDirection俘枫,句子方向
lineHeightMultiple CGFloat類(lèi)型,可變行高,乘因數(shù)
paragraphSpacingBefore CGFloat類(lèi)型逮走,段首空間
hyphenationFactor CGFloat類(lèi)型鸠蚪,連字符屬性

照例放Demo,僅供參考
Demo地址:
https://github.com/yongliangP/AttributedStringDemo
如果你覺(jué)得對(duì)你有幫助請(qǐng)點(diǎn)喜歡哦言沐,也可以關(guān)注我邓嘹,每周至少一篇技術(shù)。
或者關(guān)注 我的專(zhuān)題 每周至少5篇更新险胰,多謝支持哈汹押。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市起便,隨后出現(xiàn)的幾起案子棚贾,更是在濱河造成了極大的恐慌,老刑警劉巖榆综,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妙痹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鼻疮,警方通過(guò)查閱死者的電腦和手機(jī)怯伊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)判沟,“玉大人耿芹,你說(shuō)我怎么就攤上這事崭篡。” “怎么了吧秕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵琉闪,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我砸彬,道長(zhǎng)颠毙,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任砂碉,我火速辦了婚禮蛀蜜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绽淘。我一直安慰自己涵防,他們只是感情好闹伪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布沪铭。 她就那樣靜靜地躺著,像睡著了一般偏瓤。 火紅的嫁衣襯著肌膚如雪杀怠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天厅克,我揣著相機(jī)與錄音赔退,去河邊找鬼。 笑死证舟,一個(gè)胖子當(dāng)著我的面吹牛硕旗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播女责,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼漆枚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了抵知?” 一聲冷哼從身側(cè)響起墙基,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刷喜,沒(méi)想到半個(gè)月后残制,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掖疮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年初茶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片浊闪。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恼布,死狀恐怖吐葵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桥氏,我是刑警寧澤温峭,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站字支,受9級(jí)特大地震影響凤藏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜堕伪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一揖庄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欠雌,春花似錦蹄梢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至霍比,卻和暖如春幕袱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背悠瞬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工们豌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浅妆。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓望迎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親凌外。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辩尊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容