有時候後台會返回多行文字,其中文字中某寫大小,顏色需要特殊訂製就會比較麻煩,會用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變數指向分配在堆裡的某塊記憶體。也就是說,如果在建立乙個變數,令其指向同乙個位址,那麼並...