整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          原 薦 iOS中支持HTML文本的標簽控件-MDHT

          原 薦 iOS中支持HTML文本的標簽控件-MDHTMLLabel

          OS中支持HTML文本的標簽控件——MDHTMLLabel

          一、引言

          在iOS開發(fā)中對HTML的處理很多時候除了使用WebView外,還需要原生的控件對其進行渲染,例如將HTML字符串渲染為圖文混排的View視圖。Git上有很多輕量級的HTML渲染框架,列舉一些如下:

          RTLabel:基于UIView的HTML文本渲染控件,git地址:https://github.com/honcheng/RTLabel。

          RCLabel:與RTLabel思路相同,基于RCLabel之上,也是UIView的子類,支持了對HTML中的本地圖片標簽進行渲染。git地址:https://github.com/Janak-Nirmal/RichContentLabel。

          MDHTMLLabel:與RTLabel和RCLabel不同的是,其是UILabel的子類,更加輕量級,不能支持圖片標簽。git地址:https://github.com/mattdonnelly/MDHTMLLabel。

          關于RCLabel對圖片便簽的支持,其只能支持本地的圖片,不能支持遠程URL圖片鏈接,這在開發(fā)中將十分局限,以前我曾加RCLabel做了改造,加了支持遠程圖片URL的方法,我把它集成在了一個基礎框架中,需要的伙伴可以參考下,git地址:https://github.com/ZYHshao/YHBaseFoundationTest。配套的講解博客地址如下:http://my.oschina.net/u/2340880/blog/499311。

          本篇博客主要討論MDHTMLLabel的使用。

          二、MDHTMLLabel的創(chuàng)建與設置

          MDHTMLLabel框架十分小巧,其中只有兩個文件,總計2000余行代碼。通過HTML字符串來創(chuàng)建一個MDHTMLLabel控件示例代碼如下:

              NSString * kDemoText=@"<a >MDHTMLLabel</a> is a lightweight, easy to use replacement for <b>UILabel</b> which allows you to fully <font face='Didot-Italic' size='19'>customize</font> the appearence of the text using HTML (with a few added features thanks to <b>CoreText</b>), as well letting you handle whenever a user taps or holds down on link and automatically detects ones not wrapped in anchor tags/>";
              MDHTMLLabel *htmlLabel=[[MDHTMLLabel alloc] initWithFrame:self.view.frame];
              htmlLabel.numberOfLines=0;
              htmlLabel.htmlText=kDemoText;
              [self.view addSubview:htmlLabel];

          效果如下圖所示:

          MDHTMLLabel中可以設置的一些屬性解析如下:

          //設置超鏈接文字的屬性字典 和設置AttributeString方法一致
          @property (nonatomic, strong) NSDictionary *linkAttributes;
          //設置超鏈接文字激活時的屬性字典
          @property (nonatomic, strong) NSDictionary *activeLinkAttributes;
          //設置超鏈接非激活時的屬性字典
          @property (nonatomic, strong) NSDictionary *inactiveLinkAttributes;
          //設置超鏈接文字觸發(fā)長按事件的最小按下時間
          @property (nonatomic, assign) NSTimeInterval minimumPressDuration;
          //設置label文件陰影的模糊半徑
          @property (nonatomic, assign) CGFloat shadowRadius;
          //設置label在高亮狀態(tài)下的文字模糊半徑 注:非高亮狀態(tài)的由原生UILabel的屬性設置
          @property (nonatomic, assign) CGFloat highlightedShadowRadius;
          //設置label在高亮狀態(tài)下的文字陰影偏移 注:非高亮狀態(tài)的由原生UILabel的屬性設置
          @property (nonatomic, assign) CGSize highlightedShadowOffset;
          //設置在label高亮狀態(tài)下的文字陰影顏色 注:非高亮狀態(tài)的由原生UILabel的屬性設置
          @property (nonatomic, strong) UIColor *highlightedShadowColor;
          //設置首行文字的縮進距離
          @property (nonatomic, assign) CGFloat firstLineIndent;
          //設置文字的行間距
          @property (nonatomic, assign) CGFloat leading;
          //設置行高的倍數(shù)
          @property (nonatomic, assign) CGFloat lineHeightMultiple;
          //設置文字內(nèi)容的邊距
          @property (nonatomic, assign) UIEdgeInsets textInsets;
          //設置文字垂直方向的對其模式 默認為居中對其 MDHTMLLabelVerticalAlignment枚舉意義如下:
          /*
          typedef NS_ENUM(NSUInteger, MDHTMLLabelVerticalAlignment) {
              MDHTMLLabelVerticalAlignmentCenter=0, //居中對其
              MDHTMLLabelVerticalAlignmentTop=1, //頂部對其
              MDHTMLLabelVerticalAlignmentBottom=2, //底部對其
          };
          */
          @property (nonatomic, assign) MDHTMLLabelVerticalAlignment verticalAlignment;
          //設置文字的截斷模式
          @property (nonatomic, strong) NSString *truncationTokenString;
          //根據(jù)內(nèi)容獲取控件尺寸
          + (CGFloat)sizeThatFitsHTMLString:(NSString *)htmlString
           withFont:(UIFont *)font
           constraints:(CGSize)size
           limitedToNumberOfLines:(NSUInteger)numberOfLines;
          

          關于HTML數(shù)據(jù)中的超鏈接的相應,MDHTMLLabel是通過代理回調的方式處理的,如下:

          存的好處及應用:

          1,可以讓一些固定文件如css,js等文件在第二次訪問的時候直接讀取本地而不用再去請求服務器,這樣可以減少客服端對服務器資源的請求壓力,加快客戶端的響應速度。

          2,對于經(jīng)常使用的數(shù)據(jù)源,可以將其存儲在數(shù)據(jù)緩存中或者內(nèi)存中,這樣來減少數(shù)據(jù)庫請求。

          3,將網(wǎng)站部署在多臺機器上,采用分布式方式處理,可以解決多個用戶請求一臺服務器造成的壓力,也就是分布式部署。

          4,將那么經(jīng)常需要訪問,但是數(shù)據(jù)又不需要經(jīng)常變動的夜間做成靜態(tài)頁面。

          Asp.Net提供了一個緩存方法來實現(xiàn)緩存:OutPutCache

          OutPutCache中的屬性:

          1,Duration:頁面或者用戶控件緩存的時間,單位是秒,

          2,Location:輸出緩存的存放位置

          a)Any:客戶端瀏覽器,代理服務器,服務端服務器等

          b)Client:請求瀏覽的瀏覽器

          c)DownStram:代理服務器,發(fā)出 請求的客戶端

          d)None:對于請求的頁面,禁用輸出緩存

          e)Server:請求的web服務器

          f)ServerAndClient:發(fā)送請求的客戶端跟原服務器

          3,CacheProfile:配置文件中緩存配置的名稱,這個配置可選,

          4,NoStroe:決定了是否阻止敏感信息的二級存儲

          5,ProviderName:表示使用的自定義輸出緩存提供程序

          6,Shared:確定用戶控件輸出是否可以被多個頁共享

          7,SqlDependency:表示一組數(shù)據(jù)庫/表名稱 對應的字符串名頁或控件的輸出緩存依賴于這些名稱對。請注意,SqlCacheDependency 類監(jiān)視輸出緩存所依賴的數(shù)據(jù)庫中的表,因此當更新表中的項時,使用基于表的輪詢時將從緩存中移除這些項。如果以值 CommandNotification: 使用通知(在 Microsoft SQL Server 2005 中),則最終會使用 SqlDependency 類向 SQL Server 2005 服務器注冊查詢通知。

          8,VaryByCustom:任何表示自定義輸出緩存要求的文本。如果特性的賦值為 browser,緩存將隨瀏覽器名稱和主要版本信息的不同而異。如果輸入自定義字符串,則必須在應用程序的 Global.asax 文件中重寫 GetVaryByCustomString 方法。

          9,VaryByHeader:分號分隔的 HTTP 標頭列表,用于使輸出緩存發(fā)生變化。將該特性設為多標頭時,對于每個指定標頭組合,輸出緩存都包含一個不同版本的請求文檔。

          esium.knock能夠使Cesium球體監(jiān)聽html控件,從而根據(jù)控件的值實時改變一些場景屬性。

          knockout

          添加html控件

          <div id="toolbar" class="param-container tool-bar">
          		<table>
          			<tbody>
            			<tr>
          					<td>亮度</td>
          					<td>
          						<input type="range" min="0" max="2" step="0.02" data-bind="value: brightness, valueUpdate: 'input'">
          					</td>
          				</tr>
          			</tbody>
          	</table>
          </div>

          使用knockout雙向綁定數(shù)據(jù)


          主站蜘蛛池模板: 国产精品无码一区二区三级| 国产日韩精品一区二区三区| 农村人乱弄一区二区| 精品深夜AV无码一区二区老年 | 色视频综合无码一区二区三区| 久久中文字幕一区二区| 文中字幕一区二区三区视频播放| 亚洲国产高清在线精品一区| 日韩精品无码一区二区三区| 精品人妻AV一区二区三区| 波多野结衣AV一区二区三区中文| 成人无号精品一区二区三区| 精品不卡一区中文字幕| 国产高清视频一区三区| 亚洲第一区香蕉_国产a| 爆乳无码AV一区二区三区 | 国产精品va一区二区三区| 精品国产一区二区三区久久蜜臀 | 在线观看中文字幕一区| 久久一区二区三区99| 久久久久久人妻一区二区三区 | 国产在线观看一区精品| 亚洲一区二区三区写真| 成人国产一区二区三区| 国产精品无码一区二区在线观 | 日韩美一区二区三区| 精品久久一区二区三区| 国产日韩精品一区二区三区| 亚洲韩国精品无码一区二区三区 | 台湾无码一区二区| 亚洲一区二区三区首页| 综合人妻久久一区二区精品| 亚洲午夜在线一区| 中文字幕无码一区二区三区本日| 中文字幕人妻AV一区二区| 日韩精品无码免费一区二区三区| 亚洲电影国产一区| 国模一区二区三区| 中文字幕AV一区二区三区| 亚洲国产成人一区二区三区 | 麻豆va一区二区三区久久浪|