曹老師的iOS基礎知識D

{

??、引導界面

sleep(1.5);

self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

//查看版本號是否是最新的

NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary];

double version = [infoDict[@"CFBundleShortVersionString"] doubleValue];

NSUserDefaults *userDefauls = [NSUserDefaults standardUserDefaults];

//如果之前沒有存儲過,什么都取不出來,默認是0

double lastVersion = [[userDefauls objectForKey:@"version"] doubleValue];

// 如果版本號相比上次是最新的,則開啟引導界面

if (version > lastVersion) {//如果當前的版本比之前的版本要大

//現實引導頁面

self.window.rootViewController = [[GuideViewController alloc]init];

//更新沙盒路徑中的版本信息

[userDefauls setObject:@(version) forKey:@"version"];

}else{

self.window.rootViewController = [[MainTabbarController alloc]init];

}

}

==================================================================================================================================================

{

??、CoreImage? ? (http://www.lxweimin.com/p/384ec1beb30b)

一、框架介紹:

1).CoreImage

2).是一個圖像框架 他是基于OpenGL頂層創建 底層則用著色器來處理圖像

3).他利用GPU基于硬件加速處理圖像

4).CoreImage 中有很多濾鏡

5).它們能夠一次給予一張圖像或者視頻幀多種視覺效果 -> 濾鏡鏈

6).而且濾鏡可以連接起來組成一個濾鏡鏈 把濾鏡效果疊加起來處理圖像

二、CoreImage相關類的介紹

1、CoreImage框架中最基本代表圖像的對象。保存圖像數據的類,可以通過UIImage,圖像文件或者像素數據創建。創建類方法如下:

imageWithContentsOfURL:

imageWithData:

imageWithCGImage:

imageWithCVPixelBuffer:

2、CIFilter濾鏡類,圖片屬性進行細節處理的類,它對所有的像素進行操作 用鍵—值KVC來設置,值設置好,CIFilter就可以用來生成新的CIImage輸出圖像了。

(1)、按效果分類

kCICategoryDistortionEffect 扭曲效果,比如bump、旋轉、hole

kCICategoryGeometryAdjustment 幾何開著調整,比如仿射變換、平切、透視轉換

kCICategoryCompositeOperation 合并,比如源覆蓋(source over)、最小化、源在頂(source atop)、色彩混合模式

kCICategoryHalftoneEffect Halftone效果,比如screen、line screen、hatched

kCICategoryColorAdjustment 色彩調整,比如伽馬調整、白點調整、曝光

kCICategoryColorEffect 色彩效果,比如色調調整、posterize

kCICategoryTransition 圖像間轉換,比如dissolve、disintegrate with mask、swipe

kCICategoryTileEffect 瓦片效果,比如parallelogram、triangle

kCICategoryGenerator 圖像生成器,比如stripes、constant color、checkerboard

kCICategoryGradient 漸變,比如軸向漸變、仿射漸變、高斯漸變

kCICategoryStylize 風格化,比如像素化、水晶化

kCICategorySharpen 銳化、發光

kCICategoryBlur 模糊,比如高斯模糊、焦點模糊、運動模糊

(2)、按使用場景分類:

kCICategoryStillImage 用于靜態圖像

kCICategoryVideo 用于視頻

kCICategoryInterlaced 用于交錯圖像

kCICategoryNonSquarePixels 用于非矩形像素

kCICategoryHighDynamicRange 用于HDR

(3)、查詢分類里面的效果,返回的是數組

[CIFilter filterNamesInCategory:kCICategoryBlur];

(4)、查詢效果里面的屬性

[CIFilter filterWithName:XXX].attributes

3.CIContext 上下文是實現對圖像處理的具體對象——>(用來合成源圖和濾鏡) 濾鏡對象輸出的圖像并不是合成之后的圖像需要使用圖像處理的上下文 合并輸出的圖像。

三、基本使用

1、使用步驟

1).實例CIImage—>UIImage—>CGImageRef —> CIImage

2).創建CIFilter濾鏡并給濾鏡設置屬性(KVC)

3).創建CIContext上下文

4).合并濾鏡輸出的圖像 ->得到一個合并之后的圖像

5).賦給UIImageView對象進行顯示

2、例子

1)、創建CIImage

CIImage *inputImage = [CIImage imageWithCGImage:imageView.image.CGImage];

2)、查看kCICategoryColorEffect濾鏡的效果分類

NSLog(@"%@",[CIFilter filterNamesInCategory:kCICategoryColorEffect]);

3)、懸著其中一個類型,創建濾鏡對象

CIFilter *filter = [CIFilter filterWithName:@"CIColorMonochrome"];

4)、打印出來的是可以進行設置的屬性以及設置時需要的屬性

NSLog(@"attributes===%@",filter.attributes);

5)、濾鏡效果設置,(如何找到常見的濾波器參數鍵 例如? kCIInputImageKey (按住command點擊CIFilter 進入接口文件 165—191行都是效果分類))

[filter setValue:inputImage forKey:kCIInputImageKey];? ? //必須有,濾鏡操作的對象

[filter setValue:[CIColor colorWithRed:0.8 green:0.5 blue:0.54 alpha:1] forKey:kCIInputColorKey];

[filter setValue:@0.5 forKey:kCIInputIntensityKey];

6)、創建CIContext上下文,這時已經生成帶有濾鏡的圖像 但是沒有合成 還是兩部分 需要進行合成

CIContext *context = [CIContext contextWithOptions:nil];

7)、合并濾鏡輸出的圖像,得到一個合并之后的圖像

CIImage *outputImage = filter.outputImage;

CGImageRef imageRef =? [context createCGImage:outputImage fromRect:outputImage.extent];

8)、顯示到視圖上

imageView.image = [UIImage imageWithCGImage:imageRef];

四、人臉識別 (http://www.lxweimin.com/p/d9467ec6d746)

1、構建方法,用于返回識別到臉的數量

-(NSArray *)detectFaceWithImage:(UIImage *)faceImage

{

NSDictionary *opts = [NSDictionary dictionaryWithObject:

CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];

CIDetector *detectoer=[CIDetector detectorOfType:CIDetectorTypeFace context:nil options:opts];

CIImage *ciimage=[CIImage imageWithCGImage:faceImage.CGImage];

NSArray *featrues=[detectoer featuresInImage:ciimage];

if(featrues.count>0)

return featrues;

return nil;

}

2、在viewDidoad中實現

- (void)viewDidLoad {

[super viewDidLoad];

//帶人臉的照片

UIImage *image=[UIImage imageNamed:@"face.jpg"];

NSArray *results=[self detectFaceWithImage:image];

//可能會存在多個臉部,這里只考慮一張臉的情況

if(results.count>0)

{

CIFaceFeature *face=[results firstObject];

if(face.hasSmile)

NSLog(@"有微笑");

if(face.leftEyeClosed)

NSLog(@"左眼閉著的");

if(face.rightEyeClosed)

NSLog(@"右眼閉著的");

if(face.hasLeftEyePosition)

NSLog(@"左眼位置:%@",NSStringFromCGPoint(face.leftEyePosition));

if(face.hasRightEyePosition)

NSLog(@"右眼位置:%@",NSStringFromCGPoint(face.rightEyePosition));

if(face.hasMouthPosition)

NSLog(@"嘴巴位置:%@",NSStringFromCGPoint(face.mouthPosition));

NSLog(@"臉部區域:%@",NSStringFromCGRect(face.bounds));

if(face.bounds.size.width==face.bounds.size.height)

NSLog(@"臉蛋是圓的-.-");

}

}

}

==================================================================================================================================================

{

??、宏定義那件小事

1、屏幕的寬、高

#define kScreenWidth? [UIScreen mainScreen].bounds.size.width

#define kScreenHeight [UIScreen mainScreen].bounds.size.height

2、版本號 判斷版本號

#define iOS7 ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0 && [[UIDevice currentDevice].systemVersion floatValue] < 8.0)

#define iOS8 ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0 && [[UIDevice currentDevice].systemVersion floatValue] < 9.0)

#define iOS9 ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0)

3、不同屏幕寬、高比例系數

#define kRatioWidth? kScreenWidth/320

#define kRatioHeight kScreenHeight/568

4、RGB快速取顏色

#define RGB(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]

#define RGBA(r,g,b,a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:a]

}

==================================================================================================================================================

{

??、UIApplication

1、創建(單例類)

[UIApplication sharedApplication];

2、狀態欄樣式? ? ? ? statusBarStyle

注意:務必在plist中添加View controller-based status bar appearance,設置為NO。若是YES,改不動

在控制器中復寫方法

- (UIStatusBarStyle)preferredStatusBarStyle {

returnUIStatusBarStyleLightContent;

}

或者:

[[UIApplicationsharedApplication]setStatusBarStyle:UIStatusBarStyleDefaultanimated:YES];

3、是否隱藏狀態欄? ? statusBarHidden

在控制器中復寫方法

- (

BOOL)prefersStatusBarHidden {

returnYES;

}

4、狀態欄大小? ? ? ? statusBarFrame

5、APP圖標的徽標數字值? ? applicationIconBadgeNumber

注意:必須先設置消息通知

6、

// 設置標簽控制器的徽標

if (self.viewControllers.count >= 3) {

UIViewController *viewCtroller = self.viewControllers[3];

if (listArray.count == 0) {

viewCtroller.tabBarItem.badgeValue = nil;

} else {

viewCtroller.tabBarItem.badgeValue = [NSString stringWithFormat:@"%ld", listArray.count];

}

}

}

==================================================================================================================================================

{

??、C語言常用函數

1、scanf鍵盤輸入:

(1)、程序運行到當前代碼,會停下來,等待鍵盤的輸入,直到輸入完然后按下return,程序才往下執行

(2)、函數輸入成功后的返回1

2、

}

==================================================================================================================================================

{

??、cocoapods安裝

現在的mac系統已經默認安裝好Ruby環境,那么下載和安裝CocoaPods將十分簡單,只需要一行命令。在Terminator(也就是終端)中輸入以下命令:

1、sudo gem install cocoapods

但是,在終端中敲入這個命令之后,會發現半天沒有任何反應。原因是那堵墻阻擋了cocoapods.org。

解決辦法是,我們可以用淘寶的Ruby鏡像來訪問cocoapods。按照下面的順序在終端中敲入依次敲入命令:

2、$ gem sources --remove https://rubygems.org/

//等有反應之后再敲入以下命令

3、$ gem sources -a http://ruby.taobao.org/

為了驗證你的Ruby鏡像是并且僅是taobao,可以用以下命令查看:

4、$ gem sources -l

只有在終端中出現下面文字才表明你上面的命令是成功的:

*** CURRENT SOURCES ***

http://ruby.taobao.org/

這時候,你再次在終端中運行:

5、$ sudo gem install cocoapods

等上十幾秒鐘,CocoaPods就可以在你本地下載并且安裝好了,不再需要其他設置。

6、$ pod setup

出現

Setting up CocoaPods master repo

開始下載,可進入目錄~/.cocoapods/

使用du -sh查看下載進度,每隔一段時間查看一次

某些環境原因導致pod更新不了,可能原因有,1)gem版本太低;2)github無法鏈接;3).cocoapods目錄下的配置信息錯誤。我們可以一個一個來排除,

首先更新gem到最新版本,在終端中輸入:

$ sudo gem update --system

然后檢查是否可以ping通github,在終端中輸入:

$ ping github.com

然后查看pob repo list:

$ pod repo list

結果顯示0 repos,說明沒有安裝成功;

刪除.cocoapods目錄,重新下載pod更新:

$ cd ~/.cocoapods/

$ sudo -rm -rf ~/.cocoapods/

}

==================================================================================================================================================

{

??、發起通電

1、調用 自帶mail

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://admin@hzlzh.com"]];

2、調用 電話phone

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8008808888"]];

3、調用 SMS

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];

4、調用自帶 瀏覽器 safari

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.hzlzh.com"]];

調用phone可以傳遞號碼,調用SMS 只能設定號碼,不能初始化SMS內容。

若需要傳遞內容可以做如下操作:

}

==================================================================================================================================================

{

??、傳感器的使用

一、加速度傳感器

1、創建? ? #import

CMMotionManager *_cmm = [[CMMotionManager alloc] init];

2、設置獲取數據的頻率 每隔一秒

_cmm.accelerometerUpdateInterval = 1;

3、判斷傳感器是否可用

if (_cmm.accelerometerAvailable) {

4、不斷更新獲取數據

[_cmm startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData * _Nullable gyroData, NSError * _Nullable error) {

NSLog(@"%@", gyroData);

}];

5、當傳感器處于活躍狀態,關閉傳感器

if (_cmm.accelerometerActive) {

_cmm.stopAccelerometerUpdates;

}

二、陀螺儀

#import

//設置陀螺儀更新數據周期

_cmm.gyroUpdateInterval = 1;

//當陀螺儀可用

if (_cmm.gyroAvailable) {

//開啟陀螺儀更新數據

[_cmm startGyroUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMGyroData * _Nullable gyroData, NSError * _Nullable error) {

NSLog(@"陀螺儀:%@", gyroData);

}];

}

//關閉陀螺儀數據更新

if (_cmm.gyroActive) {

_cmm.stopGyroUpdates;

}

三、距離傳感器

#import

//距離傳感器 (傳感器攝像頭會識別障礙物,有東西時為yes,否則為no。例子:靠近時屏幕滅,遠離屏幕時亮)

//開啟監聽距離傳感器

[UIDevice currentDevice].proximityMonitoringEnabled = YES;

//添加監聽器

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(proximityChange)

name:UIDeviceProximityStateDidChangeNotification

object:nil];

- (void)proximityChange {

//獲取傳感器狀態

NSLog(@"當前距離傳感器為:%d", [UIDevice currentDevice].proximityState);

}

//關閉距離傳感器

[[NSNotificationCenter defaultCenter] removeObserver:self];

四、電源傳感器? ? (跟距離傳感器用法一致)

#import

[UIDevice currentDevice].batteryMonitoringEnabled = YES;

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(batteryChange)

name:UIDeviceBatteryLevelDidChangeNotification

object:nil];

/*

UIDeviceBatteryStateDidChangeNotification? 電池狀態的改變:是否連接上電源充電

UIDeviceBatteryLevelDidChangeNotification? 電池電量狀態的改變

*/

NSLog(@"電池電量:%.2f", [UIDevice currentDevice].batteryLevel);

五、磁場傳感器

#import

1、創建管理者

CLLocationManager *_manager = [[CLLocationManager alloc] init];

2、設置代理對象,并簽訂協議CLLocationManagerDelegate

_manager.delegate = self;

3、啟動指南針更新程序

[_manager startUpdatingHeading];

4、代理方法

已經更新指南針

- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {

NSLog(@"%@", newHeading);

//指南針_poinTto是指南針圖片,改變角度

_poinTto.transform = CGAffineTransformMakeRotation((180 - newHeading.magneticHeading)/180.0*3.1415926);

}

收起鍵盤的方法

用于獲取控制器比較困難的情況

1、[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

2、[[[UIApplicationsharedApplication]keyWindow]endEditing:YES];

3、重寫控制器的touchesBegin方法

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event {

[self.viewendEditing:YES];

}

4、調用響應控件的resignFirstResponder方法

{

1、UI界面更新必須回到主線程

2、storyBoard、xib創建的界面,都不能用alloc-init訪問,應該用UIStoryBoard-UIBundle訪問

3、先接受通知,后發送通知

4、在Xcode中刪除文件夾,有時會刪除不徹底,導致拖入文件夾時產生同名沖突,應該show in finder在文件夾中刪除

5、狀態欄就是個window,使用static修飾window,能保持一直存在

6、https加密的方式是SSL

7、nil:對象為空。nil對象調用方法什么都不會發生

Nil:類為空。Nil調用類方法,什么都不會發送

Class c = NSClassFromString(@“smsm”)

Null\null\NULL:C語言中表示空

8、MRR中是set方法,先判斷新舊對象是否一樣,若不一樣,將舊對象release再將新對象retain或copy

9、set、init都應該對對象retain一次

10、KVC(key-value-coding)鍵值編碼,可以不通過設置器方法直接給屬性賦值,波壞了封裝性

11、KVO(key-value-observe)觀察者模式

屬性不能直接賦值,應該使用set、kvc賦值,才能觸發;添加多個觀察者也只會響應同一個方法;每天加一個觀察者,就應該移除一個觀察者

12、在info.plist中添加Localizations設置item為Chinese (simplified)。這樣打開圖片庫或拍照的時候就可以顯示簡體中文了

13、協議的默認方法是必須的@request

}

———————————————————————————————————————————————零散的代碼——————————————————————————————————————————————————————————————————

{

1、獲取版本號

[[UIDevice currentDevice].systemVersion floatValue]

2、獲取鍵盤高度

1、監聽鍵盤的彈出(鍵盤彈出,系統會發送通知)

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardshow:) name:UIKeyboardWillShowNotification object:nil];

2、在接收通知的方法里獲取

- (void)keyboardshow:(NSNotification *)notification{

NSLog(@"%@",notification);

//取出鍵盤的frame

CGRect frame = [notification.userInfo [UIKeyboardFrameEndUserInfoKey]CGRectValue];

//獲取高度

CGFloat height = frame.size.height;

}

3、是否讓scrollView對象從導航欄底部開始滑動(默認是允許的YES)

self.automaticallyAdjustsScrollViewInsets = NO;

4、狀態欄的樣式

UIStatusBarStyleDefault

UIStatusBarStyleLightContent

//在控制器中復寫方法

- (UIStatusBarStyle)preferredStatusBarStyle;

5、設置一個文件整個項目可用common,將文佳拖到該下地方(更換項目目錄后,要重新拖拽)

Build Settings -> Prefix Header

6、利用字符串創建一個類的對象

UIViewController *vc = [[NSClassFromString(TwoViewController) alloc] init];

7、調節屏幕亮度(不局限于某個APP)

[[UIScreen mainScreen] setBrightness:(0~1之間的浮點數)];

}

==================================================================================================================================================

代碼塊 快速開發

~/Library/Developer/Xcode/UserData/CodeSnippets

{

適配屏幕

xib:

1、讓一個視圖的寬高等比

need-to-insert-img

}

判斷兩個區域是否有交集

CGRectIntersectsRect(attribue.frame, rect);

UICollectionViewFlowLayout 設置集合視圖動畫

#pragma mark -當當前布局bounds發生改變時,讓其他布局不發生改變- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {

returnYES;

}

#pragma mark -前端頁面的放大效果(布局時調用)

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect {

//1.獲取當前顯示collectionview的區域和坐標CGRectvisibaleRect;

visibaleRect.

origin=self.collectionView.contentOffset;

visibaleRect.

size=self.collectionView.bounds.size;

//2.調用父類方法獲取當前rect中這些item的布局信息NSArray*attributes = [superlayoutAttributesForElementsInRect:rect];

NSArray*safeAtteibutes = [[NSArrayalloc]initWithArray:attributescopyItems:YES];

for(UICollectionViewLayoutAttributes*attribueinsafeAtteibutes) {

if(CGRectIntersectsRect(attribue.frame, rect)) {//判斷是否有交集(item是否進去系統檢測范圍之內)floatdistance =CGRectGetMidX(visibaleRect) - attribue.center.x;//獲取當前item到中點的距離floatdiscale = distance/200;//放大倍數if(ABS(distance) <200) {

floatscale =1+0.3*(1-ABS(discale));//湊數

attribue.

transform3D=CATransform3DMakeScale(scale, scale,1);//對空間三個方向進行放大

attribue.

zIndex=1;//更改在z軸的的位置

}

}

}

returnsafeAtteibutes;//返回放大后的效果圖

}

剪切板 復制

UIPasteboard?*pasteboard?=[UIPasteboard?generalPasteboard];

[pasteboard?setString:[[self?textLabel]text]];

plist文件讀寫

//?文件保存的地址分兩種

//?1、獲取應用程序沙盒下的Documents目錄(或其它目錄)

NSArray*pathArr?=?NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString*path?=?[pathArrobjectAtIndex:0];

//得到完整的文件名

NSString*filePath?=?[pathstringByAppendingPathComponent:@"test.plist"];

//?2、[NSBundle?mainBundle]

//?NSString?*filePath?=?[[NSBundle?mainBundle]?pathForResource:@"test"?ofType:@"plist"];

NSMutableDictionary*data?=?[[NSMutableDictionaryalloc]initWithContentsOfFile:filePath];

NSLog(@"%@",?data);

//?添加一項內容

[datasetObject:@"add?some?content"forKey:@"c_key"];

//?文件寫入

if([datawriteToFile:filePathatomically:YES])?{

NSLog(@"寫入成功");

}else{

NSLog(@"寫入失敗");

}

//?那怎么證明我的數據寫入了呢?讀出來看看

//?文件讀取

NSMutableDictionary*data1=?[[NSMutableDictionaryalloc]initWithContentsOfFile:filePath];

NSLog(@"%@",?data1);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,837評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,196評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,688評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,654評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,456評論 6 406
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,955評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,044評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,195評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,725評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,608評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,802評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,318評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,048評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,422評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,673評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,424評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,762評論 2 372

推薦閱讀更多精彩內容