UITableViewCell部分圓角

UITableViewCell多分組下部分圓角

實現效果如圖:

swift和oc版本都有

直接上demo::https://github.com/mrzhao12/UITableViewCell-

https://juejin.cn/post/7277362508813500457

.h文件:

#import

NS_ASSUME_NONNULL_BEGIN

@interface LLJSUIKitHelper : NSObject

-(void)LLJCView:(UIView*)viewcornerRadius:(NSArray*)cornerRadius;

@end

NS_ASSUME_NONNULL_END

.m文件

#import "LLJSUIKitHelper.h"

@implementation LLJSUIKitHelper

-(void)LLJCView:(UIView*)subViewcornerRadius:(NSArray*)cornerRadius{

? ? UIBezierPath *path = [[UIBezierPath alloc] init];

? ? NSMutableArray*cornerArray? = [NSMutableArray array];

? ? for(inti =0; i

? ? ? ? if(i ==0){

? ? ? ? ? ? [cornerArrayaddObject:@(UIRectCornerTopLeft)];

? ? ? ? }elseif(i ==1){

? ? ? ? ? ? [cornerArrayaddObject:@(UIRectCornerTopRight)];

? ? ? ? }elseif(i ==2){

? ? ? ? ? ? [cornerArrayaddObject:@(UIRectCornerBottomRight)];

? ? ? ? }elseif(i ==3){

? ? ? ? ? ? [cornerArrayaddObject:@(UIRectCornerBottomLeft)];

? ? ? ? }

? ? }

? ? path = [selfdrawRoundedRect:subView.boundsbyRoundingCorners:cornerArraycornerRadius:cornerRadius];

? ? CAShapeLayer *subLayer = [CAShapeLayer layer];

? ? subLayer.fillColor = [UIColor whiteColor].CGColor;

? ? subLayer.path= path.CGPath;

? ? subLayer.frame= subView.bounds;

? ? subView.layer.mask= subLayer;

}

-(UIBezierPath*)drawRoundedRect:(CGRect)rectbyRoundingCorners:(NSMutableArray*)byRoundingCornerscornerRadius:(NSArray*)cornerRadius{

? ? UIBezierPath *path = [[UIBezierPath alloc] init];

? ? CGPoint? startPoint =CGPointMake(rect.origin.x, rect.origin.y);

? ? //處理第一個角

? ? if ([byRoundingCorners containsObject:@(UIRectCornerTopLeft)]) {

? ? ? ? NSNumber*position = cornerRadius.firstObject;// ------>cornerRadius

? ? ? ? CGFloatmycg = position.floatValue;

? ? ? ? [pathmoveToPoint:CGPointMake(startPoint.x+ mycg, startPoint.y)];

? ? }else{

? ? ? ? [pathmoveToPoint:CGPointMake(startPoint.x, startPoint.y)];

? ? }

? ? //處理第二個角

? ? if ([byRoundingCorners containsObject:@(UIRectCornerTopRight)]) {

? ? ? ? NSNumber*position = [cornerRadiusobjectAtIndex:1];

? ? ? ? CGFloatmycg = position.floatValue;

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x+ rect.size.width- mycg, startPoint.y)];

? ? ? ? [pathaddArcWithCenter:CGPointMake(startPoint.x+ rect.size.width- mycg, startPoint.y+ mycg)radius:mycgstartAngle: (M_PI*3/2)endAngle:0clockwise:YES];

? ? }else{

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x+ rect.size.width, startPoint.y)];

? ? }

? ? //處理第三個角

? ? if ([byRoundingCorners containsObject:@(UIRectCornerBottomRight)]) {

? ? ? ? NSNumber*position = [cornerRadiusobjectAtIndex:2];

? ? ? ? CGFloatmycg = position.floatValue;

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x+ rect.size.width, startPoint.y+rect.size.height)];

? ? ? ? [pathaddArcWithCenter:CGPointMake(startPoint.x+rect.size.width-mycg, startPoint.y+rect.size.height-mycg)radius:mycgstartAngle:0endAngle: (M_PI/2)clockwise:YES];

? ? }else{

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x+ rect.size.width, startPoint.y+ rect.size.height)];

? ? }

//? ? //處理第四個角

? ? if ([byRoundingCorners containsObject:@(UIRectCornerBottomLeft)]) {

? ? ? ? NSNumber*position = [cornerRadiusobjectAtIndex:3];

? ? ? ? CGFloatmycg = position.floatValue;

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x+ mycg, startPoint.y+rect.size.height)];

? ? ? ? [pathaddArcWithCenter:CGPointMake(startPoint.x+mycg, startPoint.y+ rect.size.height-mycg)radius:mycgstartAngle: (M_PI/2)endAngle: (M_PI)clockwise:YES];

? ? }else{

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x, startPoint.y+rect.size.height)];

? ? }

//? ? //再次處理第一個角

? ? if ([byRoundingCorners containsObject:@(UIRectCornerTopLeft)]) {

? ? ? ? NSNumber*position = cornerRadius.firstObject;

?? ? ? ? CGFloatmycg = position.floatValue;

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x, startPoint.y+ mycg)];

? ? ? ? [pathaddArcWithCenter:CGPointMake(startPoint.x+mycg, startPoint.y+ mycg)radius:mycgstartAngle: (M_PI)endAngle:(M_PI*3/2)clockwise:YES];

? ? }else{

? ? ? ? [pathaddLineToPoint:CGPointMake(startPoint.x, startPoint.y)];

? ? }

? ? returnpath;

}

@end

調用:直接在對應的TableView所在vc里寫如下即可:

- (void)tableView:(UITableView*)tableViewwillDisplayCell:(UITableViewCell*)cellforRowAtIndexPath:(NSIndexPath*)indexPath{

? ? //組切圓角

? ? //方法一 判斷第一個cell, 切出左上和又上圓角, 最后一個cell, 切出左下和右下圓角

? ? //方法二 使用帶圓角的圖片模擬

? ? LLJSUIKitHelper*kitHelper =? [[LLJSUIKitHelper alloc] init];

? ? if(indexPath.section==sectionSystem){

? ? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(20),@(20),@(20),@(20)]];

? }? elseif(indexPath.section==sectionCommunity){

? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(20),@(20),@(12),@(12)]];

? }

? elseif(indexPath.section==sectionWangyi){

? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(20),@(10),@(40),@(20)]];

? }elseif(indexPath.section==sectionChat){


? ? ? if(self.recentSessions.count>0) {

? ? ? ? ? if(self.recentSessions.count==1) {

? ? ? ? ? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(10),@(10),@(10),@(10)]];

? ? ? ? ? }else{

? ? ? ? ? ? ? if( indexPath.row==0) {

? ? ? ? ? ? ? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(10),@(10),@(0),@(0)]];

? ? ? ? ? ? ? }elseif(indexPath.row==self.recentSessions.count-1) {

//? ? ? ? ? ? ? ? ? LLJSUIKitHelper.LLJCView(subView: cell, cornerRadius: [0,0,12,12])

? ? ? ? ? ? ? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(0),@(0),@(10),@(10)]];

? ? ? ? ? ? ? }

? ? ? ? ? }

? ? ? }


? }

? elseif(indexPath.section==sectionGray){

? ? ? [kitHelperLLJCView:cellcornerRadius:@[@(20),@(10),@(40),@(20)]];

? }

}

----------------

swift代碼如下:

importUIKit

public class LLJSUIKitHelper {

? ? //UIView

? ? class func LLJView(backGroundColor: UIColor?, frame: CGRect?) -> UIView {


? ? ? ? letview =UIView()

? ? ? ? if(backGroundColor !=nil) {

? ? ? ? ? ? view.backgroundColor= backGroundColor

? ? ? ? }

? ? ? ? if(frame !=nil) {

? ? ? ? ? ? view.frame= frame!

? ? ? ? }

? ? ? ? returnview

? ? }


? ? //UIView 切統(tǒng)一圓角

? ? class func LLJCView(subView: UIView, cornerRadius: CGFloat) {

? ? ? ? // 圓角

? ? ? ? LLJCView(subView: subView,cornerRadius: [cornerRadius,cornerRadius,cornerRadius,cornerRadius])

? ? }


? ? //UIView 切指定不同圓角 cornerRadius = [8,10,12,14] 一次對應topLeft,topRight,bottomRight,bottomLeft的圓角半徑

? ? class func LLJCView(subView: UIView, cornerRadius: [CGFloat]) {


? ? ? ? // 圓角

? ? ? ? varpath:UIBezierPath?

? ? ? ? varcornerArray = [UIRectCorner]()

? ? ? ? foriinstride(from:0,to: cornerRadius.count,by:1) {


? ? ? ? ? ? ifi ==0{

? ? ? ? ? ? ? ? cornerArray.append(UIRectCorner.topLeft)

? ? ? ? ? ? }elseifi ==1{

? ? ? ? ? ? ? ? cornerArray.append(UIRectCorner.topRight)

? ? ? ? ? ? }elseifi ==2{

? ? ? ? ? ? ? ? cornerArray.append(UIRectCorner.bottomRight)

? ? ? ? ? ? }elseifi ==3{

? ? ? ? ? ? ? ? cornerArray.append(UIRectCorner.bottomLeft)

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? path =LLJBezierPath.drawRoundedRect(rect: subView.bounds,byRoundingCorners: cornerArray,cornerRadius: cornerRadius)

? ? ? ? letsubLayer =CAShapeLayer()

? ? ? ? subLayer.path= path!.cgPath

? ? ? ? subLayer.frame= subView.bounds

? ? ? ? subView.layer.mask= subLayer;

? ? }


? ? //按鈕

? ? class func LLJButton(title: String?, titleColor: UIColor?, backGroundColor: UIColor?, titleFont: UIFont?, frame: CGRect?) -> UIButton {


? ? ? ? let button = UIButton(type: UIButton.ButtonType.custom)

? ? ? ? if(title !=nil) {

? ? ? ? ? ? button.setTitle(title,for:UIControl.State.normal)

? ? ? ? }

? ? ? ? if(titleColor !=nil) {

? ? ? ? ? ? button.setTitleColor(titleColor,for:UIControl.State.normal)

? ? ? ? }

? ? ? ? if(backGroundColor !=nil) {

? ? ? ? ? ? button.backgroundColor= backGroundColor

? ? ? ? }

? ? ? ? if(titleFont !=nil) {

? ? ? ? ? ? button.titleLabel?.font= titleFont

? ? ? ? }

? ? ? ? if(frame !=nil) {

? ? ? ? ? ? button.frame= frame!

? ? ? ? }

? ? ? ? returnbutton;

? ? }


? ? //Label

? ? class func LLJLabel(title: String?, titleColor: UIColor?, backGroundColor: UIColor?, titleFont: UIFont?, frame: CGRect?, numberOfLines: Int) -> UILabel {


? ? ? ? letlabel =UILabel()

? ? ? ? if(title !=nil) {

? ? ? ? ? ? label.text= title

? ? ? ? }

? ? ? ? if(titleColor !=nil) {

? ? ? ? ? ? label.textColor= titleColor

? ? ? ? }

? ? ? ? if(backGroundColor !=nil) {

? ? ? ? ? ? label.backgroundColor= backGroundColor

? ? ? ? }

? ? ? ? if(titleFont !=nil) {

? ? ? ? ? ? label.font= titleFont

? ? ? ? }

? ? ? ? if(frame !=nil) {

? ? ? ? ? ? label.frame= frame!

? ? ? ? }

? ? ? ? label.numberOfLines= numberOfLines

? ? ? ? returnlabel;

? ? }

}

importUIKit

class LLJBezierPath {

? ? /*

?? ? * 畫圓 橢圓

?? ? * rect.w = rect.h 時畫圓; rect.w != rect.h 畫橢圓

?? ? */

? ? class func drawCyle(rect: CGRect) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath.init(ovalIn: rect)

? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫圓 圓弧

?? ? * arcCenter: 圓心

?? ? * radius: 半徑

?? ? * startAngle: 開始角度

?? ? * endAngle: 結束角度

?? ? * clockwise: 順時針 yes 逆時針 no

?? ? */

? ? class func drawCyle(arcCenter: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath.init(arcCenter: arcCenter,radius: radius,startAngle: startAngle,endAngle: endAngle,clockwise: clockwise)

? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫矩形 統(tǒng)一圓角

?? ? * rect: 矩形rect

?? ? */

? ? class func drawRoundedRect(rect: CGRect, cornerRadius: CGFloat?) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath.init(roundedRect: rect,cornerRadius: cornerRadius ??0.0)

? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫矩形 單一圓角

?? ? * rect: 矩形rect

?? ? */

? ? class func drawRoundedRect(rect: CGRect, byRoundingCorners: UIRectCorner, cornerRadius: CGFloat) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath.init(roundedRect: rect,byRoundingCorners: byRoundingCorners,cornerRadii:CGSize(width: cornerRadius,height: cornerRadius))

? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫矩形 可變圓角

?? ? * byRoundingCorners: 需要切的圓角

?? ? * cornerRadius: 圓角半徑

?? ? * 注意:byRoundingCorners要和cornerRadius一一對應琳轿。

?? ? * 如:[UIRectCorner.topLeft,UIRectCorner.topRight,UIRectCorner.bottomLeft,UIRectCorner.bottomRight] 對應 [10,5,5,10]

?? ? */

? ? class func drawRoundedRect(rect: CGRect, byRoundingCorners: [UIRectCorner], cornerRadius: [CGFloat]) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath()

? ? ? ? letstartPoint =CGPoint(x: rect.origin.x,y: rect.origin.y)


? ? ? ? //處理第一個角

? ? ? ? ifbyRoundingCorners.contains(UIRectCorner.topLeft) {


? ? ? ? ? ? letposition = byRoundingCorners.firstIndex(of:UIRectCorner.topLeft)

? ? ? ? ? ? path.move(to:CGPoint(x: startPoint.x+ cornerRadius[position!],y: startPoint.y))

? ? ? ? }else{

? ? ? ? ? ? path.move(to:CGPoint(x: startPoint.x,y: startPoint.y))

? ? ? ? }

? ? ? ? //處理第二個角

? ? ? ? ifbyRoundingCorners.contains(UIRectCorner.topRight) {


? ? ? ? ? ? letposition = byRoundingCorners.firstIndex(of:UIRectCorner.topRight)

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x+ rect.width- cornerRadius[position!],y: startPoint.y))

? ? ? ? ? ? path.addArc(withCenter:CGPoint(x: startPoint.x+ rect.width- cornerRadius[position!],y: startPoint.y+ cornerRadius[position!]),radius: cornerRadius[position!],startAngle:CGFloat.pi*3/2,endAngle:0,clockwise:true)


? ? ? ? }else{

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x+ rect.width,y: startPoint.y))

? ? ? ? }

? ? ? ? //處理第三個角

? ? ? ? ifbyRoundingCorners.contains(UIRectCorner.bottomRight) {


? ? ? ? ? ? letposition = byRoundingCorners.firstIndex(of:UIRectCorner.bottomRight)

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x+ rect.width,y: startPoint.y+ rect.height- cornerRadius[position!]))

? ? ? ? ? ? path.addArc(withCenter:CGPoint(x: startPoint.x+ rect.width- cornerRadius[position!],y: startPoint.y+ rect.height- cornerRadius[position!]),radius: cornerRadius[position!],startAngle:0,endAngle:CGFloat.pi/2,clockwise:true)


? ? ? ? }else{

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x+ rect.width,y: startPoint.y+ rect.height))

? ? ? ? }


? ? ? ? //處理第四個角

? ? ? ? ifbyRoundingCorners.contains(UIRectCorner.bottomLeft) {


? ? ? ? ? ? letposition = byRoundingCorners.firstIndex(of:UIRectCorner.bottomLeft)

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x+ cornerRadius[position!],y: startPoint.y+ rect.height))

? ? ? ? ? ? path.addArc(withCenter:CGPoint(x: startPoint.x+ cornerRadius[position!],y: startPoint.y+ rect.height- cornerRadius[position!]),radius: cornerRadius[position!],startAngle:CGFloat.pi/2,endAngle:CGFloat.pi,clockwise:true)

? ? ? ? }else{

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x,y: startPoint.y+ rect.height))

? ? ? ? }


? ? ? ? //再次處理第一個角

? ? ? ? ifbyRoundingCorners.contains(UIRectCorner.topLeft) {


? ? ? ? ? ? letposition = byRoundingCorners.firstIndex(of:UIRectCorner.topLeft)

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x,y: startPoint.y+ cornerRadius[position!]))

? ? ? ? ? ? path.addArc(withCenter:CGPoint(x: startPoint.x+ cornerRadius[position!],y: startPoint.y+ cornerRadius[position!]),radius: cornerRadius[position!],startAngle:CGFloat.pi,endAngle:CGFloat.pi*3/2,clockwise:true)

? ? ? ? }else{

? ? ? ? ? ? path.addLine(to:CGPoint(x: startPoint.x,y: startPoint.y))

? ? ? ? }


? ? ? ? returnpath

? ? }



? ? /*

?? ? * 畫多邊行 或折線

?? ? * pointArray:多邊形頂點數組脸候,第一個點默認起點

?? ? * closePath:true表示關閉莫矗,即多邊形烛占;false表示不關閉,即折線圖

?? ? */

? ? class func drawPolygon(pointArray: Array<CGPoint>, closePath: Bool) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath()

? ? ? ? foriinstride(from:0,to: pointArray.count,by:1) {

? ? ? ? ? ? letpoint = pointArray[i]

? ? ? ? ? ? ifi ==0{

? ? ? ? ? ? ? ? path.move(to: point)

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? path.addLine(to: point)

? ? ? ? ? ? }

? ? ? ? }


? ? ? ? ifclosePath {

? ? ? ? ? ? path.close()

? ? ? ? }


? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫曲線 單曲線

?? ? * startPoint: 起點

?? ? * endPoint: 終點

?? ? * controlPoint: 控制點

?? ? */

? ? class func drawoQuadCurve(startPoint: CGPoint, endPoint: CGPoint, controlPoint: CGPoint) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath()

? ? ? ? path.move(to: startPoint)

? ? ? ? path.addQuadCurve(to: endPoint,controlPoint: controlPoint)

? ? ? ? returnpath

? ? }


? ? /*

?? ? * 畫曲線 雙曲線

?? ? * startPoint: 起點

?? ? * endPoint: 終點

?? ? * controlPoint1: 控制點1

?? ? * controlPoint2: 控制點2

?? ? */

? ? class func drawCurve(startPoint: CGPoint, endPoint: CGPoint, controlPoint1: CGPoint, controlPoint2: CGPoint) -> UIBezierPath {


? ? ? ? letpath =UIBezierPath()

? ? ? ? path.move(to: startPoint)

? ? ? ? path.addCurve(to: endPoint,controlPoint1: controlPoint1,controlPoint2: controlPoint2)

? ? ? ? returnpath

? ? }

}

調用:

extension LLJWChatMainViewController: UITableViewDelegate {

? ??functableView(_tableView:UITableView,willDisplaycell:UITableViewCell,forRowAtindexPath:IndexPath) {

? ? ? ? //組切圓角

? ? ? ? //方法一 判斷第一個cell, 切出左上和又上圓角, 最后一個cell, 切出左下和右下圓角

? ? ? ? //方法二 使用帶圓角的圖片模擬

? ? ? ? letsubArray =self.dataArray[indexPath.section]

? ? ? ? //切圓角

? ? ? ? ifsubArray.count==1{

? ? ? ? ? ? LLJSUIKitHelper.LLJCView(subView: cell,cornerRadius: [12,12,12,12])

? ? ? ? }else{

? ? ? ? ? ? ifindexPath.row==0{

? ? ? ? ? ? ? ? LLJSUIKitHelper.LLJCView(subView: cell,cornerRadius: [12,12,0,0])

? ? ? ? ? ? }elseif(indexPath.row== subArray.count-1) {

? ? ? ? ? ? ? ? LLJSUIKitHelper.LLJCView(subView: cell,cornerRadius: [0,0,12,12])

? ? ? ? ? ? }

? ? ? ? }

? ? }

}


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末胁出,一起剝皮案震驚了整個濱河市型型,隨后出現的幾起案子,更是在濱河造成了極大的恐慌全蝶,老刑警劉巖闹蒜,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異抑淫,居然都是意外死亡绷落,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門始苇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砌烁,“玉大人,你說我怎么就攤上這事埂蕊⊥” “怎么了疏唾?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵蓄氧,是天一觀的道長。 經常有香客問我槐脏,道長喉童,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任顿天,我火速辦了婚禮堂氯,結果婚禮上,老公的妹妹穿的比我還像新娘牌废。我一直安慰自己咽白,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布鸟缕。 她就那樣靜靜地躺著晶框,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懂从。 梳的紋絲不亂的頭發(fā)上授段,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音番甩,去河邊找鬼侵贵。 笑死,一個胖子當著我的面吹牛缘薛,可吹牛的內容都是我干的窍育。 我是一名探鬼主播卡睦,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蔫骂!你這毒婦竟也來了么翰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤辽旋,失蹤者是張志新(化名)和其女友劉穎浩嫌,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體补胚,經...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡码耐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了溶其。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片骚腥。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓶逃,靈堂內的尸體忽然破棺而出束铭,到底是詐尸還是另有隱情,我是刑警寧澤厢绝,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布契沫,位于F島的核電站,受9級特大地震影響昔汉,放射性物質發(fā)生泄漏懈万。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一靶病、第九天 我趴在偏房一處隱蔽的房頂上張望会通。 院中可真熱鬧,春花似錦娄周、人聲如沸涕侈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裳涛。三九已至,卻和暖如春掷酗,著一層夾襖步出監(jiān)牢的瞬間调违,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工泻轰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留技肩,地道東北人。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像虚婿,于是被迫代替她去往敵國和親旋奢。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內容