iOS 中通常載入 HTML 字串

2021-10-02 02:39:50 字數 2976 閱讀 7148

有時候後台會返回多行文字,其中文字中某寫大小,顏色需要特殊訂製就會比較麻煩,會用html 字串返回給前台。

假如後台返回的是responsedata[@"activitymsg"]   這個,長這樣

activitymsg = "

1.本次交易僅支援 信用卡,光大銀行手機信用卡

2.光大聯名信用卡最高滿5000元減300元

3.使用銀行卡滿減權益的訂單不支援退款

"

1,通過 uilabel 載入富文字的方法載入 html 字串

nsstring* str1 = [self htmlentitydecode:responsedata[@"content"]];

//2.將html字串轉換為attributestring

nsattributedstring * attributestr = [self attributedstringwithhtmlstring:str1];

//3.使用label載入html字串

_contentlab.attributedtext = attributestr;

_contentlab.text  //這個取到的值可以當成字串往後面的頁面去傳

cgsize titlesize = [_contentlab.attributedtext boundingrectwithsize:cgsizemake(kscreenwidth-60, maxfloat) options:nsstringdrawinguseslinefragmentorigin | nsstringdrawingusesfontleading context:nil].size;

_contentlab.frame=cgrectmake(30, 115, kscreenwidth-60, ceilf(titlesize.height));

//將 < 等類似的字元轉化為html中的「<」等

- (nsstring *)htmlentitydecode:(nsstring *)string

string = [string stringbyreplacingoccurrencesofstring:@""" withstring:@"\""];

string = [string stringbyreplacingoccurrencesofstring:@"'" withstring:@"'"];

string = [string stringbyreplacingoccurrencesofstring:@"<" withstring:@"<"];

string = [string stringbyreplacingoccurrencesofstring:@">" withstring:@">"];

string = [string stringbyreplacingoccurrencesofstring:@"&" withstring:@"&"]; // do this last so that, e.g. @"<" goes to @"<" not @"<"

return string;

//將html字串轉化為nsattributedstring富文字字串

- (nsattributedstring *)attributedstringwithhtmlstring:(nsstring *)htmlstring

nsdictionary *options = @;

nsdata *data = [htmlstring datausingencoding:nsutf8stringencoding];

return [[nsattributedstring alloc] initwithdata:data options:options documentattributes:nil error:nil];

//去掉 html 字串中的標籤

- (nsstring *)filterhtml:(nsstring *)html

nsscanner * scanner = [nsscanner scannerwithstring:html];

nsstring * text = nil;

while([scanner isatend]==no)

//找到標籤的起始位置

[scanner scanuptostring:@"<" intostring:nil];

//找到標籤的結束位置

[scanner scanuptostring:@">" intostring:&text];

//替換字元

html = [html stringbyreplacingoccurrencesofstring:[nsstring stringwithformat:@"%@>",text] withstring:@""];

//    nsstring * regex = @"<([^>]*)>";

//    html = [html stringbyreplacingoccurrencesofstring:regex withstring:@""];

return html;

uiwebview * webview = [[uiwebview alloc]initwithframe:cgrectmake(20, 300, self.view.frame.size.width - 40, 400)];

[webview loadhtmlstring:str1 baseurl:nil];

[self.view addsubview:webview];

self.webview = webview;

換成wkwebview也行 也是具有這個方法

loadhtmlstring:str1 baseurl:

iOS中OC載入HTML字串

最近專案裡面遇見了 html 字串,整理如下 後台返回字串的樣式 在 ios 中通常載入 html 字串有兩種方式 void viewdidload 將 等類似的字元轉化為html中的 nsstring htmlentitydecode nsstring string 將html字串轉化為nsatt...

iOS中的字串NSString

建立乙個字串物件 nsstring str1 hello world nsstring str nsstring alloc initwithstring hello world nsstring str 1 nsstring alloc initwithutf8string hello world...

iOS中的字串記憶體

字串的記憶體淺解 oc語言中的指標是用來指示物件的 宣告乙個變數,令其指向某個物件,如 nsstring somestring the string 這樣物件所佔的記憶體分配到了 堆空間 中,somestring變數指向分配在堆裡的某塊記憶體。也就是說,如果在建立乙個變數,令其指向同乙個位址,那麼並...