日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS之WebView的使用总结

發布時間:2025/4/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS之WebView的使用总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

iOS學習之WebView的使用

http://blog.csdn.net/totogo2010/article/details/7686164
目錄(?)[+]
1、使用UIWebView加載網頁
運行XCode 4.3,新建一個Single View Application,命名為WebViewDemo。


2、加載WebView
在ViewController.h添加WebView成員變量和在ViewController.m添加實現
[cpp] view plain copy
#import <UIKit/UIKit.h> ?
??
@interface ViewController : UIViewController ?
{ ?
? ? UIWebView *webView; ?
} ?
@end ?
[cpp] view plain copy
ViewController.m ?
[cpp] view plain copy
- (void)viewDidLoad ?
{ ?
? ? [super viewDidLoad]; ?
? ? webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; ?
? ? NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]; ?
? ? [self.view addSubview: webView]; ?
? ? [webView loadRequest:request]; ?
} ?
運行,這樣百度網頁就打開了




手機的網絡環境是實時變化的,網絡慢的時候,怎么提示用戶網頁正在打開呢?在網頁打開出錯的時候怎么提示用戶呢?這時候我們就需要知道網頁什么時候打開的,
什么時候加載完成,什么時候出錯了。那么我們需要實現這個<UIWebViewDelegate>協議
3、實現協議,在ViewController.h修改如下:
[cpp] view plain copy
#import <UIKit/UIKit.h> ?
??
@interface ViewController : UIViewController<UIWebViewDelegate> ?
{ ?
? ? UIWebView *webView; ?
} ?
@end ?


按住control+command+向上鍵,切換到ViewController.m文件,這是我們在文件中打入- (void) webView,就能看到如下實現方法:




UIWebView中幾個重要的函數
1.- (void )webViewDidStartLoad:(UIWebView ?*)webView ? 網頁開始加載的時候調用
2.- (void )webViewDidFinishLoad:(UIWebView ?*)webView ?網頁加載完成的時候調用
3.- (void)webView:(UIWebView *)webView ?didFailLoadWithError:(NSError *)error 網頁加載錯誤的時候調用
4、實現這三個方法,加入NSLog。
先在viewDidLoad 的webView實例化下面加上
? ? [webView setDelegate:self];設置代理。這樣上面的三個方法才能得到回調。
三個方法實現如下:
[cpp] view plain copy
<span style="font-family:Arial, Verdana, sans-serif;color:#333333;">- (void) webViewDidStartLoad:(UIWebView *)webView ?
{ ?
? ? NSLog(@"webViewDidStartLoad"); ?
} ?
- (void) webViewDidFinishLoad:(UIWebView *)webView ?
{ ?
? ? NSLog(@"webViewDidFinishLoad"); ?
} ?
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error ?
{ ?
? ? NSLog(@"didFailLoadWithError:%@", error); ?
} ?
</span> ?
運行打印:
2012-06-23 15:20:29.728 WebViewDemo[1001:f803] webViewDidStartLoad
2012-06-23 15:20:29.991 WebViewDemo[1001:f803] webViewDidFinishLoad
那我們試試error情況,把wifi關掉,運行打印結果:
2012-06-23 15:23:58.939 WebViewDemo[1087:f803] webViewDidStartLoad
2012-06-23 15:23:59.016 WebViewDemo[1087:f803] webViewDidFinishLoad
請求結果不變,為什么關掉網絡還成功了呢?緩存?我換163.com試試,這是真正的結果出來了:
2012-06-23 15:24:41.131 WebViewDemo[1134:f803] webViewDidStartLoad
2012-06-23 15:24:41.149 WebViewDemo[1134:f803] didFailLoadWithError:Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo=0x6b41660 {NSErrorFailingURLStringKey=http://www.163.com/, NSErrorFailingURLKey=http://www.163.com/, NSLocalizedDescription=The Internet connection appears to be offline., NSUnderlyingError=0x6eae690 "The Internet connection appears to be offline."}
連接錯誤了,調用了didFailLoadWithError。
5、加載等待界面
為了給用戶更直觀的界面效果,我們加上等待的loading界面試試
在webViewDidStartLoad加入等待
[cpp] view plain copy
<strong>- (void) webViewDidStartLoad:(UIWebView *)webView ?
{ ?
? ? //創建UIActivityIndicatorView背底半透明View ? ? ??
? ? UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; ? ?
? ? [view setTag:108]; ? ?
? ? [view setBackgroundColor:[UIColor blackColor]]; ? ?
? ? [view setAlpha:0.5]; ? ?
? ? [self.view addSubview:view]; ? ?
? ? ??
? ? activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)]; ? ?
? ? [activityIndicator setCenter:view.center]; ? ?
? ? [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite]; ? ?
? ? [view addSubview:activityIndicator]; ? ?
??
? ? [activityIndicator startAnimating]; ?
? ?</strong> ?


加載完成或失敗時,去掉loading效果
[cpp] view plain copy
<strong>- (void) webViewDidFinishLoad:(UIWebView *)webView ?
{ ?
? ? [activityIndicator stopAnimating]; ?
? ? UIView *view = (UIView*)[self.view viewWithTag:108]; ?
? ? [view removeFromSuperview]; ?
? ? NSLog(@"webViewDidFinishLoad"); ?
??
} ?
- (void) webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error ?
{ ?
? ? [activityIndicator stopAnimating]; ?
? ? UIView *view = (UIView*)[self.view viewWithTag:108]; ?
? ? [view removeFromSuperview]; ?
? ? </strong> ?
運行效果:




例子代碼:http://download.csdn.net/detail/totogo2010/4391866
========

iOS開發中WebView的使用

http://blog.csdn.net/jingjingxujiayou/article/details/23018519?utm_source=tuicool&utm_medium=referral


在AppDelegate.m文件中


[objc] view plain copy 在CODE上查看代碼片派生到我的代碼片
#import "AppDelegate.h" ?
#import "webTableViewController.h" ?
@implementation AppDelegate ?
??
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions ?
{ ?
? ? self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; ?
? ? // Override point for customization after application launch. ?
? ? self.window.backgroundColor = [UIColor whiteColor]; ?
? ? webTableViewController *web = [[webTableViewController alloc]init]; ?
? ? self.window.rootViewController = web; ?
? ? [self.window makeKeyAndVisible]; ?
? ? return YES; ?
} ?




新鍵一個類命名為webTableViewController


webTableViewController.h


[objc] view plain copy 在CODE上查看代碼片派生到我的代碼片
#import <UIKit/UIKit.h> ?
??
@interface webTableViewController : UIViewController<UIWebViewDelegate> ?
{ ?
? ? IBOutlet UIWebView *webView; ?
? ? ??
? ? UIActivityIndicatorView *activityIndicatorView; ?
? ? UIView *opaqueView; ?
} ?
??
@end ?


webTableViewController.m


[objc] view plain copy 在CODE上查看代碼片派生到我的代碼片
#import "webTableViewController.h" ?
??
@interface webTableViewController () ?
??
@end ?
??
@implementation webTableViewController ?
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ?
{ ?
? ? self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; ?
? ? if (self) { ?
? ? ? ? // Custom initialization ?
? ? } ?
? ? return self; ?
} ?
??
- (void)viewDidLoad ?
{ ?
? ? [super viewDidLoad]; ?
? ? webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 44, 320, 440)]; ?
? ? [webView setUserInteractionEnabled:YES];//是否支持交互 ?
? ? //[webView setDelegate:self]; ?
? ? webView.delegate=self; ?
? ? [webView setOpaque:NO];//opaque是不透明的意思 ?
? ? [webView setScalesPageToFit:YES];//自動縮放以適應屏幕 ?
? ? [self.view addSubview:webView]; ?
? ? ??
? ? //加載網頁的方式 ?
? ? //1.創建并加載遠程網頁 ?
? ? NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; ?
? ? [webView loadRequest:[NSURLRequest requestWithURL:url]]; ?
? ? //2.加載本地文件資源 ?
? ?/* NSURL *url = [NSURL fileURLWithPath:filePath];?
? ? NSURLRequest *request = [NSURLRequest requestWithURL:url];?
? ? [webView loadRequest:request];*/ ?
? ? //3.讀入一個HTML,直接寫入一個HTML代碼 ?
? ? //NSString *htmlPath = [[[NSBundle mainBundle]bundlePath]stringByAppendingString:@"webapp/loadar.html"]; ?
? ? //NSString *htmlString = [NSString stringWithContentsOfURL:htmlPath encoding:NSUTF8StringEncoding error:NULL]; ?
? ? //[webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:htmlPath]]; ?
? ? ??
? ? opaqueView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; ?
? ? activityIndicatorView = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; ?
? ? [activityIndicatorView setCenter:opaqueView.center]; ?
? ? [activityIndicatorView setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite]; ?
? ? [opaqueView setBackgroundColor:[UIColor blackColor]]; ?
? ? [opaqueView setAlpha:0.6]; ?
? ? [self.view addSubview:opaqueView]; ?
? ? [opaqueView addSubview:activityIndicatorView]; ?
? ? ??
? ? ??
} ?
??
-(void)webViewDidStartLoad:(UIWebView *)webView{ ?
? ? [activityIndicatorView startAnimating]; ?
? ? opaqueView.hidden = NO; ?
} ?
??
-(void)webViewDidFinishLoad:(UIWebView *)webView{ ?
? ? [activityIndicatorView startAnimating]; ?
? ? opaqueView.hidden = YES; ?
} ?
??
//UIWebView如何判斷 HTTP 404 等錯誤 ?
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{ ?
? ? NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"]; ?
? ? NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response; ?
? ? if ((([httpResponse statusCode]/100) == 2)) { ?
? ? ? ? // self.earthquakeData = [NSMutableData data]; ?
? ? ? ? [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; ?
? ? ? ? ??
? ? ? ? [ webView loadRequest:[ NSURLRequest requestWithURL: url]]; ?
? ? ? ? webView.delegate = self; ?
? ? } else { ?
? ? ? ? NSDictionary *userInfo = [NSDictionary dictionaryWithObject: ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NSLocalizedString(@"HTTP Error", ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @"Error message displayed when receving a connection error.") ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?forKey:NSLocalizedDescriptionKey]; ?
? ? ? ? NSError *error = [NSError errorWithDomain:@"HTTP" code:[httpResponse statusCode] userInfo:userInfo]; ?
? ? ? ? ??
? ? ? ? if ([error code] == 404) { ?
? ? ? ? ? ? NSLog(@"xx"); ?
? ? ? ? ? ? webView.hidden = YES; ?
? ? ? ? } ?
? ? ? ? ??
? ? } ?
} ?
- (void)didReceiveMemoryWarning ?
{ ?
? ? [super didReceiveMemoryWarning]; ?
? ? // Dispose of any resources that can be recreated. ?
} ?
??
@end?
========

iOS中UIWebView的使用詳解及利用webview實現圖文混排實例

http://blog.csdn.net/hdfqq188816190/article/details/51670842
目錄(?)[-]
iOS中UIWebView的使用詳解
一初始化與三種加載方式
二一些常用的屬性和變量
三iOS7中的一些新特性
四webView協議中的方法
UIWebView保存圖片
iOS中UIWebView的使用詳解
一、初始化與三種加載方式
? ? ?UIWebView繼承與UIView,因此,其初始化方法和一般的view一樣,通過alloc和init進行初始化,其加載數據的方式有三種:
第一種:
- (void)loadRequest:(NSURLRequest *)request;
這是加載網頁最常用的一種方式,通過一個網頁URL來進行加載,這個URL可以是遠程的也可以是本地的,例如我加載百度的主頁:
? ? UIWebView * view = [[UIWebView alloc]initWithFrame:self.view.frame];
? ? [view loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.baidu.com"]]];
? ? [self.view addSubview:view];
會得到如下的效果:




第二種:
- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL;
這個方法需要將httml文件讀取為字符串,其中baseURL是我們自己設置的一個路徑,用于尋找html文件中引用的圖片等素材。
第三種:
- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName baseURL:(NSURL *)baseURL;
這個方式使用的比較少,但也更加自由,其中data是文件數據,MIMEType是文件類型,textEncodingName是編碼類型,baseURL是素材資源路徑。
二、一些常用的屬性和變量
@property (nonatomic,assign)id <UIWebViewDelegate> delegate;設置webView的代理
@property (nonatomic,readonly,retain)UIScrollView *scrollView;內置的scrollView
@property (nonatomic,readonly,retain)NSURLRequest *request;URL請求
- (void)reload;重新加載數據
- (void)stopLoading;停止加載數據
- (void)goBack;返回上一級
- (void)goForward;跳轉下一級
@property (nonatomic,readonly,getter=canGoBack)BOOL canGoBack;獲取能否返回上一級
@property (nonatomic,readonly,getter=canGoForward)BOOL canGoForward;獲取能否跳轉下一級
@property (nonatomic,readonly,getter=isLoading)BOOL loading;獲取是否正在加載數據
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;通過javaScript操作web數據
@property (nonatomic)BOOL scalesPageToFit;設置是否縮放到適合屏幕大小
@property (nonatomic)UIDataDetectorTypes dataDetectorTypesNS_AVAILABLE_IOS(3_0);設置某些數據變為鏈接形式,這個枚舉可以設置如電話號,地址,郵箱等轉化為鏈接
@property (nonatomic)BOOL allowsInlineMediaPlaybackNS_AVAILABLE_IOS(4_0);設置是否使用內聯播放器播放視頻
@property (nonatomic)BOOL mediaPlaybackRequiresUserActionNS_AVAILABLE_IOS(4_0);設置視頻是否自動播放
@property (nonatomic)BOOL mediaPlaybackAllowsAirPlayNS_AVAILABLE_IOS(5_0);設置音頻播放是否支持ari play功能
@property (nonatomic)BOOL suppressesIncrementalRenderingNS_AVAILABLE_IOS(6_0);設置是否將數據加載如內存后渲染界面
@property (nonatomic)BOOL keyboardDisplayRequiresUserActionNS_AVAILABLE_IOS(6_0);設置用戶交互模式
三、iOS7中的一些新特性
下面這些屬性是iOS7之后才有的,通過他們可以設置更加有趣的web體驗
@property (nonatomic)UIWebPaginationMode paginationModeNS_AVAILABLE_IOS(7_0);
? ? typedef NS_ENUM(NSInteger, UIWebPaginationMode) {
? ? ? ? UIWebPaginationModeUnpaginated,//不使用翻頁效果
? ? ? ? UIWebPaginationModeLeftToRight,//將網頁超出部分分頁,從左向右進行翻頁
? ? ? ? UIWebPaginationModeTopToBottom,//將網頁超出部分分頁,從上向下進行翻頁
? ? ? ? UIWebPaginationModeBottomToTop,//將網頁超出部分分頁,從下向上進行翻頁
? ? ? ? UIWebPaginationModeRightToLeft//將網頁超出部分分頁,從右向左進行翻頁
? ? };
這個屬性用來設置一種模式,當網頁的大小超出view時,將網頁以翻頁的效果展示,枚舉如下:
@property (nonatomic)CGFloat pageLengthNS_AVAILABLE_IOS(7_0);設置每一頁的長度
@property (nonatomic)CGFloat gapBetweenPagesNS_AVAILABLE_IOS(7_0);設置每一頁的間距
@property (nonatomic,readonly)NSUInteger pageCountNS_AVAILABLE_IOS(7_0);獲取分頁數


四、webView協議中的方法
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
準備加載內容時調用的方法,通過返回值來進行是否加載的設置
- (void)webViewDidStartLoad:(UIWebView *)webView;開始加載時調用的方法
- (void)webViewDidFinishLoad:(UIWebView *)webView;結束加載時調用的方法
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加載失敗時調用的方法


實例:
2.下面看一下效果:


步驟:
0.創建兩個視圖控制體
創建一個新項目,然后創建兩個控制器LvesViewController和 LvesOriginalController
分別添加一個UIWebView到self.view上。
1.去除webView滾動時,上下的白邊。
- (void)clearWebViewBackground:(UIWebView *)webView
{
? ? UIWebView *web = webView;
? ? for (id v in web.subviews) {
? ? ? ? if ([v isKindOfClass:[UIScrollView class]]) {
? ? ? ? ? ? [v setBounces:NO];
? ? ? ? }
? ? }
}
2.設置代理
//2. 設置代理
? ? self.myWebView.delegate=self;
3.添加加載webview的視圖
#pragma mark 加載WebView
-(void) loadMyWebView{
? NSString *title=@"韓寒《后會無期》奇葩的吸金3秘籍";
??
? NSString *linkStr=[NSString stringWithFormat:@"<a href='%@'>我的博客</a> <a href='%@'>原文</a>",@"http://blog.csdn.net/wildcatlele",@"http://jincuodao.baijia.baidu.com/article/26059"];
??
? NSString *p1=@"韓寒《后會無期》的吸金能力很讓我驚訝!8月12日影片票房已成功沖破6億大關。而且排片量仍保持10 以上,以日收千萬的速度穩步向七億進軍。";
??
? NSString *p2=@"要知道,《后會無期》不是主流類型片,是一個文藝片。不像《小時代》,是一個商業主流的偶像電影。";
? NSString *image1=[NSString stringWithFormat:@"<img src='%@' ?height='280' width='300' />",@"http://nvren.so/uploads/allimg/c140801/140DR4554L40-YB9.jpg"];
? NSString *image2=[NSString stringWithFormat:@"<img src='%@' ?height='280' width='300' />",@"http://f.hiphotos.baidu.com/news/w%3D638/sign=78315beeb1fb43161a1f797918a44642/2934349b033b5bb58cb61bdb35d3d539b600bcb5.jpg"];
??
? NSString *p3=@"太奇葩了!有人說,這是中國電影市場的紅利,是粉絲電影的成功。但是,有一部投資3000萬的粉絲電影《我就是我》,有明星,制作也不錯,基本上是慘敗。";
??
? NSString *p4=@"《后會無期》賣的不是好故事,是優越感。特別是針對80、90后的人群,你有沒有發現,看《后會無期》比看《小時代3》有明顯的優越感。故事雖然一般,但是很多人看完后,會在微博、微信上曬照片。所以說,對一個族群靠的不是廣度,而是深度。<br>\
? \
? 很兇殘,值得大家借鑒。韓寒《后會無期》還有什么秘密武器,歡迎《后會無期》團隊或相關方爆料,直接留言即可,有料的可以送黎萬強親筆簽名的《參與感》一書。";
??
? //初始化和html字符串
? NSString *htmlURlStr=[NSString stringWithFormat:@"<body style='background-color:#EBEBF3'><h2>%@</h2><p>%@</p> <p>%@ </p>%@ <br><p> %@</p> <p>%@</p>%@<p>%@</p></body>",title,linkStr,p1,image1,p2,p3,image2,p4];
??
? [self.myWebView loadHTMLString:htmlURlStr baseURL:nil];


}
4.實現代理方法,(處理連接點擊事件)
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{


? NSString *urlStr=request.URL.absoluteString;
??
? NSLog(@"url: %@",urlStr);
??
? //為空,第一次加載本頁面
? if ([urlStr isEqualToString:@"about:blank"]) {
? ? return YES;
? }
??
? //設置點擊后的視圖控制器
? LvesOriginalController *originalC=[[LvesOriginalController alloc] init];
? originalC.originUrl=urlStr; //設置請求連接
? //跳轉到點擊后的控制器并加載webview
? [self.navigationController pushViewController:originalC animated:YES];
??
? return ?NO;
}
//設置底部滾動不彈回
- (void)webViewDidFinishLoad:(UIWebView *)webView{
? NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
? NSString* javascript = [NSString stringWithFormat:@"window.scrollBy(0, %d);", height];
? [webView stringByEvaluatingJavaScriptFromString:javascript];


}
5.實現OrigainalViewController
//
// ?LvesOriginalController.m
// ?WebViewDemo
//
// ?Created by Lves Li on 14-8-15.
// ?Copyright (c) 2014年 Lves. All rights reserved.
//


#import "LvesOriginalController.h"


@interface LvesOriginalController ()
{
? UIWebView *_webView;
}
@end


@implementation LvesOriginalController


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
? self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
? if (self) {
? ? // Custom initialization
? }
? return self;
}


- (void)viewDidLoad
{
? [super viewDidLoad];
? //設置title
? self.title=@"原文";
??
??
? _webView=[[UIWebView alloc] init];
? _webView.frame=[[UIScreen mainScreen] bounds];
??
? [self.view addSubview:_webView];
??
? [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.originUrl]]];
??
??
}
@end


UIWebView保存圖片


http://www.cocoachina.com/ios/20160616/16660.html
========

總結

以上是生活随笔為你收集整理的iOS之WebView的使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。