YYKit源碼探究(七十一) —— NSMutableAttributedString分類(lèi)之Set character attribute as property(十)

版本記錄

版本號(hào) 時(shí)間
V1.0 2018.04.01

前言

iOS圈內(nèi)有幾個(gè)人大家基本都知道蜗帜,比如說(shuō)王巍缴淋、唐巧旱函,還有YYKit框架的作者現(xiàn)任職于滴滴的郭曜源 - ibireme等响巢。這里有一篇唐巧對(duì)他的專(zhuān)訪(fǎng),還有他的 GitHub - Yaoyuan博客棒妨,這里貼出來(lái)框架YYKit 框架踪古。接下來(lái)幾篇我們就一起來(lái)看一下這個(gè)框架。感興趣的可以看上面寫(xiě)的幾篇券腔。
1. YYKit源碼探究(一) —— 基本概覽
2. YYKit源碼探究(二) —— NSString分類(lèi)之Hash(一)
3. YYKit源碼探究(三) —— NSString分類(lèi)之Encode and decode(二)
4. YYKit源碼探究(四) —— NSString分類(lèi)之Drawing(三)
5. YYKit源碼探究(五) —— NSString分類(lèi)之Regular Expression(四)
6. YYKit源碼探究(六) —— NSString分類(lèi)之NSNumber Compatible(五)
7. YYKit源碼探究(七) —— NSString分類(lèi)之Utilities(六)
8. YYKit源碼探究(八) —— NSNumber分類(lèi)(一)
9. YYKit源碼探究(九) —— UIFont分類(lèi)之架構(gòu)分析和Font Traits(一)
10. YYKit源碼探究(十) —— UIFont分類(lèi)之Create font(二)
11. YYKit源碼探究(十一) —— UIFont分類(lèi)之Load and unload font(三)
12. YYKit源碼探究(十二) —— UIFont分類(lèi)之Dump font data(四)
13. YYKit源碼探究(十三) —— UIImage分類(lèi)之框架結(jié)構(gòu)和Create image部分(一)
14. YYKit源碼探究(十四) —— UIImage分類(lèi)之Image Info(二)
15. YYKit源碼探究(十五) —— UIImage分類(lèi)之Modify Image(三)
16. YYKit源碼探究(十六) —— UIImage分類(lèi)之Image Effect(四)
17. YYKit源碼探究(十七) —— UIImageView分類(lèi)之架構(gòu)和image部分(一)
18. YYKit源碼探究(十八) —— UIImageView分類(lèi)之highlight image部分(二)
19. YYKit源碼探究(十九) —— UIScreen分類(lèi)(一)
20. YYKit源碼探究(二十) —— UIScrollView分類(lèi)(一)
21. YYKit源碼探究(二十一) —— UITableView分類(lèi)(一)
22. YYKit源碼探究(二十二) —— UITextField分類(lèi)(一)
23. YYKit源碼探究(二十三) —— UIView分類(lèi)(一)
24. YYKit源碼探究(二十四) —— UIPasteboard分類(lèi)(一)
25. YYKit源碼探究(二十五) —— UIGestureRecognizer分類(lèi)(一)
26. YYKit源碼探究(二十六) —— UIDevice分類(lèi)框架及Device Information(一)
27. YYKit源碼探究(二十七) —— UIDevice分類(lèi)之Network Information(二)
28. YYKit源碼探究(二十八) —— UIDevice分類(lèi)之Disk Space(三)
29. YYKit源碼探究(二十九) —— UIDevice分類(lèi)之Memory Information(四)
30. YYKit源碼探究(三十) —— UIDevice分類(lèi)之CPU Information(五)
31. YYKit源碼探究(三十一) —— UIControl分類(lèi)(一)
32. YYKit源碼探究(三十二) —— UIColor分類(lèi)之Create a UIColor Object(一)
33. YYKit源碼探究(三十三) —— UIColor分類(lèi)之Get color's description(二)
34. YYKit源碼探究(三十四) —— UIColor分類(lèi)之Retrieving Color Information(三)
35. YYKit源碼探究(三十五) —— UIButton分類(lèi)之image(一)
36. YYKit源碼探究(三十六) —— UIButton分類(lèi)之background image(二)
37. YYKit源碼探究(三十七) —— UIBezierPath分類(lèi)(一)
38. YYKit源碼探究(三十八) —— UIBarButtonItem分類(lèi)(一)
39. YYKit源碼探究(三十九) —— UIApplication分類(lèi)(一)
40. YYKit源碼探究(四十) —— NSTimer分類(lèi)(一)
41. YYKit源碼探究(四十一) —— NSParagraphStyle分類(lèi)(一)
42. YYKit源碼探究(四十二) —— NSObject分類(lèi)之YYModel(一)
43. YYKit源碼探究(四十三) —— NSObject分類(lèi)之KVO(二)
44. YYKit源碼探究(四十四) —— NSObject分類(lèi)之Sending messages with variable parameters(三)
45. YYKit源碼探究(四十五) —— NSObject分類(lèi)之Swap method (Swizzling)(四)
46. YYKit源碼探究(四十六) —— NSObject分類(lèi)之Associate value(五)
47. YYKit源碼探究(四十七) —— NSObject分類(lèi)之Other(六)
48. YYKit源碼探究(四十八) —— NSNotificationCenter分類(lèi)(一)
49. YYKit源碼探究(四十九) —— NSKeyedUnarchiver分類(lèi)(一)
50. YYKit源碼探究(五十) —— NSDictionary分類(lèi)之Dictionary Convertor(一)
51. YYKit源碼探究(五十一) —— NSDictionary分類(lèi)之Dictionary Value Getter(二)
52. YYKit源碼探究(五十二) —— NSDictionary分類(lèi)之NSMutableDictionary(三)
53. YYKit源碼探究(五十三) —— NSDate分類(lèi)之Component Properties(一)
54. YYKit源碼探究(五十四) —— NSDate分類(lèi)之Date modify(二)
55. YYKit源碼探究(五十五) —— NSDate分類(lèi)之Date Format(三)
56. YYKit源碼探究(五十六) —— NSData分類(lèi)之Hash(一)
57. YYKit源碼探究(五十七) —— NSData分類(lèi)之Encrypt and Decrypt(二)
58. YYKit源碼探究(五十八) —— NSData分類(lèi)之Encode and decode(三)
59. YYKit源碼探究(五十九) —— NSData分類(lèi)之Inflate and deflate(四)
60. YYKit源碼探究(六十) —— NSData分類(lèi)之Others(五)
61. YYKit源碼探究(六十一) —— NSBundle分類(lèi)(一)
62. YYKit源碼探究(六十二) —— NSAttributedString分類(lèi)之基本(一)
63. YYKit源碼探究(六十三) —— NSAttributedString分類(lèi)之Retrieving character attribute information(二)
64. YYKit源碼探究(六十四) —— NSAttributedString分類(lèi)之Get character attribute as property(三)
65. YYKit源碼探究(六十五) —— NSAttributedString分類(lèi)之Get paragraph attribute as property(四)
66. YYKit源碼探究(六十六) —— NSAttributedString分類(lèi)之Get YYText attribute as property(五)
67. YYKit源碼探究(六十七) —— NSAttributedString分類(lèi)之Query for YYText(六)
68. YYKit源碼探究(六十八) —— NSAttributedString分類(lèi)之Create attachment string for YYText(七)
69. YYKit源碼探究(六十九) —— NSAttributedString分類(lèi)之Utility(八)
70. YYKit源碼探究(七十) —— NSMutableAttributedString分類(lèi)之Set character attribute(九)

回顧

上一篇主要介紹了NSMutableAttributedString分類(lèi)的Set character attribute部分伏穆,這一篇主要看一下NSMutableAttributedString分類(lèi)的Set character attribute as property部分。


API

下面我們看一下API

1. @property (nullable, nonatomic, strong, readwrite) UIFont *font; 和 - (void)setFont:(nullable UIFont *)font range:(NSRange)range;

文本的字體颅眶,默認(rèn)是Helvetica (Neue) 12蜈出。

方法實(shí)現(xiàn)

- (void)setFont:(UIFont *)font {
    /*
     In iOS7 and later, UIFont is toll-free bridged to CTFontRef,
     although Apple does not mention it in documentation.
     
     In iOS6, UIFont is a wrapper for CTFontRef, so CoreText can alse use UIfont,
     but UILabel/UITextView cannot use CTFontRef.
     
     We use UIFont for both CoreText and UIKit.
     */
    [self setFont:font range:NSMakeRange(0, self.length)];
}

- (void)setFont:(UIFont *)font range:(NSRange)range {
    /*
     In iOS7 and later, UIFont is toll-free bridged to CTFontRef,
     although Apple does not mention it in documentation.
     
     In iOS6, UIFont is a wrapper for CTFontRef, so CoreText can alse use UIfont,
     but UILabel/UITextView cannot use CTFontRef.
     
     We use UIFont for both CoreText and UIKit.
     */
    [self setAttribute:NSFontAttributeName value:font range:range];
}

2. @property (nullable, nonatomic, strong, readwrite) NSNumber *kern; 和 - (void)setKern:(nullable NSNumber *)kern range:(NSRange)range;

字距調(diào)整,默認(rèn)是標(biāo)準(zhǔn)字距涛酗。 kerning屬性表示后面的字符應(yīng)該從其當(dāng)前字符的字體定義的默認(rèn)偏移量中移動(dòng)多少個(gè)點(diǎn); 整數(shù)的kern指示更遠(yuǎn)的移位铡原,而負(fù)值kern指示更接近當(dāng)前的字符的移位偷厦。 如果此屬性不存在,則將使用標(biāo)準(zhǔn)字距燕刻。 如果此屬性設(shè)置為0.0只泼,則根本不會(huì)執(zhí)行字距調(diào)整。

方法實(shí)現(xiàn)

- (void)setKern:(NSNumber *)kern {
    [self setKern:kern range:NSMakeRange(0, self.length)];
}

- (void)setKern:(NSNumber *)kern range:(NSRange)range {
    [self setAttribute:NSKernAttributeName value:kern range:range];
}

3. @property (nullable, nonatomic, strong, readwrite) UIColor *color; 和 - (void)setColor:(nullable UIColor *)color range:(NSRange)range;

獲取foreground color卵洗,默認(rèn)是black请唱。

方法實(shí)現(xiàn)

- (void)setColor:(UIColor *)color {
    [self setColor:color range:NSMakeRange(0, self.length)];
}

- (void)setColor:(UIColor *)color range:(NSRange)range {
    [self setAttribute:(id)kCTForegroundColorAttributeName value:(id)color.CGColor range:range];
    [self setAttribute:NSForegroundColorAttributeName value:color range:range];
}

- (void)setAttribute:(NSString *)name value:(id)value range:(NSRange)range {
    if (!name || [NSNull isEqual:name]) return;
    if (value && ![NSNull isEqual:value]) [self addAttribute:name value:value range:range];
    else [self removeAttribute:name range:range];
}

4. @property (nullable, nonatomic, strong, readwrite) UIColor *backgroundColor; 和 - (void)setBackgroundColor:(nullable UIColor *)backgroundColor range:(NSRange)range;

獲取background color,默認(rèn)是nil过蹂,沒(méi)有背景色十绑。

方法實(shí)現(xiàn)

- (void)setBackgroundColor:(UIColor *)backgroundColor {
    [self setBackgroundColor:backgroundColor range:NSMakeRange(0, self.length)];
}

- (void)setBackgroundColor:(UIColor *)backgroundColor range:(NSRange)range {
    [self setAttribute:NSBackgroundColorAttributeName value:backgroundColor range:range];
}

5. @property (nullable, nonatomic, strong, readwrite) NSNumber *strokeWidth; 和 - (void)setStrokeWidth:(nullable NSNumber *)strokeWidth range:(NSRange)range;

獲取描邊的線(xiàn)寬。默認(rèn)值是0酷勺,此屬性解釋為字體點(diǎn)值的百分比本橙,用于控制文本繪圖模式:正值僅影響繪圖描邊;負(fù)值是描邊和填充脆诉。 輪廓文本的典型值為3.0甚亭。

方法實(shí)現(xiàn)

- (void)setStrokeWidth:(NSNumber *)strokeWidth {
    [self setStrokeWidth:strokeWidth range:NSMakeRange(0, self.length)];
}

- (void)setStrokeWidth:(NSNumber *)strokeWidth range:(NSRange)range {
    [self setAttribute:NSStrokeWidthAttributeName value:strokeWidth range:range];
}

6. @property (nullable, nonatomic, strong, readwrite) UIColor *strokeColor; 和 - (void)setStrokeColor:(nullable UIColor *)strokeColor range:(NSRange)range;

獲取描邊的顏色。默認(rèn)是nil击胜,(same as foreground color)亏狰。

方法實(shí)現(xiàn)

- (void)setStrokeColor:(UIColor *)strokeColor {
    [self setStrokeColor:strokeColor range:NSMakeRange(0, self.length)];
}

- (void)setStrokeColor:(UIColor *)strokeColor range:(NSRange)range {
    [self setAttribute:(id)kCTStrokeColorAttributeName value:(id)strokeColor.CGColor range:range];
    [self setAttribute:NSStrokeColorAttributeName value:strokeColor range:range];
}

7. @property (nullable, nonatomic, strong, readwrite) NSShadow *shadow; 和 - (void)setShadow:(nullable NSShadow *)shadow range:(NSRange)range;

獲取的是文本陰影,默認(rèn)值是nil偶摔,沒(méi)有陰影暇唾。

方法實(shí)現(xiàn)

- (void)setShadow:(NSShadow *)shadow {
    [self setShadow:shadow range:NSMakeRange(0, self.length)];
}

- (void)setShadow:(NSShadow *)shadow range:(NSRange)range {
    [self setAttribute:NSShadowAttributeName value:shadow range:range];
}

8. @property (nonatomic, readwrite) NSUnderlineStyle strikethroughStyle; 和 - (void)setStrikethroughStyle:(NSUnderlineStyle)strikethroughStyle range:(NSRange)range;

獲取strikethrough style,默認(rèn)值是NSUnderlineStyleNone啰挪。

方法實(shí)現(xiàn)

- (void)setStrikethroughStyle:(NSUnderlineStyle)strikethroughStyle {
    [self setStrikethroughStyle:strikethroughStyle range:NSMakeRange(0, self.length)];
}

- (void)setStrikethroughStyle:(NSUnderlineStyle)strikethroughStyle range:(NSRange)range {
    NSNumber *style = strikethroughStyle == 0 ? nil : @(strikethroughStyle);
    [self setAttribute:NSStrikethroughStyleAttributeName value:style range:range];
}

9. @property (nullable, nonatomic, strong, readwrite) UIColor *strikethroughColor; 和 - (void)setStrikethroughColor:(nullable UIColor *)strikethroughColor range:(NSRange)range

獲取strikethrough color信不,默認(rèn)值是nil嘲叔,(same as foreground color)亡呵。

方法實(shí)現(xiàn)

- (void)setStrikethroughColor:(UIColor *)strikethroughColor {
    [self setStrikethroughColor:strikethroughColor range:NSMakeRange(0, self.length)];
}

- (void)setStrikethroughColor:(UIColor *)strikethroughColor range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:NSStrikethroughColorAttributeName value:strikethroughColor range:range];
    }
}

10. @property (nonatomic, readwrite) NSUnderlineStyle underlineStyle; 和 - (void)setUnderlineStyle:(NSUnderlineStyle)underlineStyle range:(NSRange)range;

獲取下劃線(xiàn)樣式,默認(rèn)值是NSUnderlineStyleNone硫戈,沒(méi)有下劃線(xiàn)锰什。

方法實(shí)現(xiàn)

- (void)setUnderlineStyle:(NSUnderlineStyle)underlineStyle {
    [self setUnderlineStyle:underlineStyle range:NSMakeRange(0, self.length)];
}

- (void)setUnderlineStyle:(NSUnderlineStyle)underlineStyle range:(NSRange)range {
    NSNumber *style = underlineStyle == 0 ? nil : @(underlineStyle);
    [self setAttribute:NSUnderlineStyleAttributeName value:style range:range];
}

11. @property (nullable, nonatomic, strong, readwrite) UIColor *underlineColor; 和 - (void)setUnderlineColor:(nullable UIColor *)underlineColor range:(NSRange)range;

獲取下劃線(xiàn)顏色,默認(rèn)值是nil丁逝。

方法實(shí)現(xiàn)

- (void)setUnderlineColor:(UIColor *)underlineColor {
    [self setUnderlineColor:underlineColor range:NSMakeRange(0, self.length)];
}

- (void)setUnderlineColor:(UIColor *)underlineColor range:(NSRange)range {
    [self setAttribute:(id)kCTUnderlineColorAttributeName value:(id)underlineColor.CGColor range:range];
    if (kSystemVersion >= 7) {
        [self setAttribute:NSUnderlineColorAttributeName value:underlineColor range:range];
    }
}

12. @property (nullable, nonatomic, strong, readwrite) NSNumber *ligature; 和 - (void)setLigature:(nullable NSNumber *)ligature range:(NSRange)range;

獲取Ligature formation control汁胆。

默認(rèn)值為int值1,ligature屬性確定顯示字符串時(shí)應(yīng)使用哪種ligature霜幼。 值為0表示只應(yīng)使用正確呈現(xiàn)文本所必需的ligature嫩码,1表示應(yīng)使用標(biāo)準(zhǔn)ligature,而2表示應(yīng)使用所有可用ligature罪既。 哪些ligature是標(biāo)準(zhǔn)的铸题,取決于腳本和可能的字體铡恕。

方法實(shí)現(xiàn)

- (void)setLigature:(NSNumber *)ligature {
    [self setLigature:ligature range:NSMakeRange(0, self.length)];
}

- (void)setLigature:(NSNumber *)ligature range:(NSRange)range {
    [self setAttribute:NSLigatureAttributeName value:ligature range:range];
}

13. @property (nullable, nonatomic, strong, readwrite) NSString *textEffect; 和 - (void)setTextEffect:(nullable NSString *)textEffect range:(NSRange)range

獲取文本效果,默認(rèn)值是nil丢间,當(dāng)前支持的值是NSTextEffectLetterpressStyle探熔。

方法實(shí)現(xiàn)

- (void)setTextEffect:(NSString *)textEffect {
    [self setTextEffect:textEffect range:NSMakeRange(0, self.length)];
}

- (void)setTextEffect:(NSString *)textEffect range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:NSTextEffectAttributeName value:textEffect range:range];
    }
}

14. @property (nullable, nonatomic, strong, readwrite) NSNumber *obliqueness; 和 - (void)setObliqueness:(nullable NSNumber *)obliqueness range:(NSRange)range

要應(yīng)用于字形的傾斜,默認(rèn)值是0烘挫,沒(méi)有傾斜诀艰。

方法實(shí)現(xiàn)

- (void)setObliqueness:(NSNumber *)obliqueness {
    [self setObliqueness:obliqueness range:NSMakeRange(0, self.length)];
}

- (void)setObliqueness:(NSNumber *)obliqueness range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:NSObliquenessAttributeName value:obliqueness range:range];
    }
}

15. @property (nullable, nonatomic, strong, readwrite) NSNumber *expansion; 和 - (void)setExpansion:(nullable NSNumber *)expansion range:(NSRange)range

要應(yīng)用于字形的擴(kuò)展因子的日志,默認(rèn)值是0饮六,沒(méi)有擴(kuò)展其垄。

方法實(shí)現(xiàn)

- (void)setExpansion:(NSNumber *)expansion {
    [self setExpansion:expansion range:NSMakeRange(0, self.length)];
}

- (void)setExpansion:(NSNumber *)expansion range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:NSExpansionAttributeName value:expansion range:range];
    }
}

16. @property (nullable, nonatomic, strong, readwrite) NSNumber *baselineOffset; 和 - (void)setBaselineOffset:(nullable NSNumber *)baselineOffset range:(NSRange)range NS_AVAILABLE_IOS(7_0);

字符基線(xiàn)的偏移量,以點(diǎn)為單位卤橄。默認(rèn)值是0捉捅。

方法實(shí)現(xiàn)

- (void)setBaselineOffset:(NSNumber *)baselineOffset {
    [self setBaselineOffset:baselineOffset range:NSMakeRange(0, self.length)];
}

- (void)setBaselineOffset:(NSNumber *)baselineOffset range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:NSBaselineOffsetAttributeName value:baselineOffset range:range];
    }
}

17. @property (nonatomic, readwrite) BOOL verticalGlyphForm; 和 - (void)setVerticalGlyphForm:(BOOL)verticalGlyphForm range:(NSRange)range;

獲取Glyph orientation control,默認(rèn)值為NO虽风。NO的值表示要使用水平字形棒口,YES表示要使用垂直字形。

方法實(shí)現(xiàn)

- (void)setVerticalGlyphForm:(BOOL)verticalGlyphForm {
    [self setVerticalGlyphForm:verticalGlyphForm range:NSMakeRange(0, self.length)];
}

- (void)setVerticalGlyphForm:(BOOL)verticalGlyphForm range:(NSRange)range {
    NSNumber *v = verticalGlyphForm ? @(YES) : nil;
    [self setAttribute:NSVerticalGlyphFormAttributeName value:v range:range];
}

18. @property (nullable, nonatomic, strong, readwrite) NSString *language; 和 - (void)setLanguage:(nullable NSString *)language range:(NSRange)range

指定文本語(yǔ)言辜膝。

值必須是包含區(qū)域設(shè)置標(biāo)識(shí)符的NSString无牵。 默認(rèn)值未設(shè)置。 當(dāng)這個(gè)屬性被設(shè)置為一個(gè)有效的標(biāo)識(shí)符時(shí)厂抖,它將被用來(lái)選擇本地化的字形(如果字體支持)和特定于語(yǔ)言環(huán)境的換行規(guī)則茎毁。

方法實(shí)現(xiàn)

- (void)setLanguage:(NSString *)language {
    [self setLanguage:language range:NSMakeRange(0, self.length)];
}

- (void)setLanguage:(NSString *)language range:(NSRange)range {
    if (kSystemVersion >= 7) {
        [self setAttribute:(id)kCTLanguageAttributeName value:language range:range];
    }
}

19. @property (nullable, nonatomic, strong, readwrite) NSArray<NSNumber *> *writingDirection; 和 - (void)setWritingDirection:(nullable NSArray<NSNumber *> *)writingDirection range:(NSRange)range;

Specifies a bidirectional override or embedding

可以參考NSWritingDirectionNSWritingDirectionAttributeName

方法實(shí)現(xiàn)

- (void)setWritingDirection:(NSArray *)writingDirection {
    [self setWritingDirection:writingDirection range:NSMakeRange(0, self.length)];
}

- (void)setWritingDirection:(NSArray *)writingDirection range:(NSRange)range {
    [self setAttribute:(id)kCTWritingDirectionAttributeName value:writingDirection range:range];
}

20. @property (nullable, nonatomic, strong, readwrite) NSParagraphStyle *paragraphStyle; 和 - (void)setParagraphStyle:(nullable NSParagraphStyle *)paragraphStyle range:(NSRange)range;

一個(gè)NSParagraphStyle對(duì)象忱辅,用于指定類(lèi)似line alignment七蜘、tab rulers, writing direction等事情。

方法實(shí)現(xiàn)

- (void)setParagraphStyle:(NSParagraphStyle *)paragraphStyle {
    /*
     NSParagraphStyle is NOT toll-free bridged to CTParagraphStyleRef.
     
     CoreText can use both NSParagraphStyle and CTParagraphStyleRef,
     but UILabel/UITextView can only use NSParagraphStyle.
     
     We use NSParagraphStyle in both CoreText and UIKit.
     */
    [self setParagraphStyle:paragraphStyle range:NSMakeRange(0, self.length)];
}

- (void)setParagraphStyle:(NSParagraphStyle *)paragraphStyle range:(NSRange)range {
    /*
     NSParagraphStyle is NOT toll-free bridged to CTParagraphStyleRef.
     
     CoreText can use both NSParagraphStyle and CTParagraphStyleRef,
     but UILabel/UITextView can only use NSParagraphStyle.
     
     We use NSParagraphStyle in both CoreText and UIKit.
     */
    [self setAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:range];
}

后記

本篇主要介紹了NSMutableAttributedString分類(lèi)的Set character attribute as property墙懂,感興趣的給個(gè)贊或者關(guān)注~~~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末橡卤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子损搬,更是在濱河造成了極大的恐慌碧库,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巧勤,死亡現(xiàn)場(chǎng)離奇詭異嵌灰,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)颅悉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)沽瞭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人剩瓶,你說(shuō)我怎么就攤上這事驹溃∑獍辏” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵吠架,是天一觀(guān)的道長(zhǎng)芙贫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)傍药,這世上最難降的妖魔是什么磺平? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮拐辽,結(jié)果婚禮上拣挪,老公的妹妹穿的比我還像新娘。我一直安慰自己俱诸,他們只是感情好菠劝,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著睁搭,像睡著了一般赶诊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上园骆,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天舔痪,我揣著相機(jī)與錄音,去河邊找鬼锌唾。 笑死锄码,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晌涕。 我是一名探鬼主播滋捶,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼余黎!你這毒婦竟也來(lái)了重窟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤驯耻,失蹤者是張志新(化名)和其女友劉穎亲族,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體可缚,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年斋枢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帘靡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓤帚,死狀恐怖描姚,靈堂內(nèi)的尸體忽然破棺而出涩赢,到底是詐尸還是另有隱情,我是刑警寧澤轩勘,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布筒扒,位于F島的核電站,受9級(jí)特大地震影響绊寻,放射性物質(zhì)發(fā)生泄漏花墩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一澄步、第九天 我趴在偏房一處隱蔽的房頂上張望冰蘑。 院中可真熱鬧,春花似錦村缸、人聲如沸祠肥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)仇箱。三九已至,卻和暖如春东羹,著一層夾襖步出監(jiān)牢的瞬間工碾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工百姓, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渊额,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓垒拢,卻偏偏與公主長(zhǎng)得像旬迹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子求类,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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