iOS 분석 HTMl 태그 및 개발 중인 구덩이
업데이트 날 짜 를 보고 오 랜 만 에 약 서 를 썼 습 니 다.항상 친구 들 이 글 아래 에서 댓 글 을 달 았 습 니 다.자신 이 쓴 것 을 보면 도움 이 되 었 습 니 다.자신 을 격려 하고 계속 견 뎌 내 도록 하 세 요.하하.오늘 은 주로 iOS 에서 HTML 탭 을 어떻게 해석 하 는 지 쓰 겠 습 니 다.저희 가 자주 사용 하 는 백 엔 드 에서 데 이 터 를 되 돌려 주 는 것 은 제 이 슨 형식 입 니 다.하지만 가끔 은 HTMl 탭 이 있 는 우리 가 그 를 어떻게 처리 해 야 할 지 오늘 말씀 드 리 겠 습 니 다.
본문
이틀 전에 백 스테이지 데 이 터 를 가 져 왔 을 때 이런 반환 정 보 를 얻 었 습 니 다.
" <font color='red'>8.1 </font> "
간단하게 리 턴 데 이 터 를 label 에 보 여 주 는 일이 재 미 있 었 는데 백 스테이지 에 서 는 나중에 제품 이 콘 텐 츠 로 바 뀔 때 쉽게 처리 하기 위해 서 라 고 하 는데 그 이유 가 강하 다.하지만 개발 한 우리 가 어떻게 처리 해 야 할 지 먼저 안 드 로 이 드 의 처리 방법 을 살 펴 보 자.안 드 로 이 드 는 이것 을 처리 하 는 것 이 비교적 거 친 사람 에 게 체계 적 인 방법 이 있다.다음 과 같다.
그러면 iOS 엔 드 는 어떻게 처리 할 까요?우 리 는 webview 를 사용 할 수도 있 고 Label 의 attributedString 속성 을 사용 할 수도 있 습 니 다.문자열 을 간단하게 나 누고 HTML 라벨 을 제거 한 다음 에 처리 할 수도 있 습 니 다.들 어보 면 서 글 프 지만 방법 이기 때문에 문 제 를 해결 할 수 있 는 방법 은 모두 좋 은 방법 입 니 다.가장 거 친 방법의 주요 코드(나머지 방법 은 댓 글 에'하하'가 추가 되 어 있 습 니 다)를 놓 겠 습 니 다.HTML 라벨 을 제거 하 는 방법 은 다음 과 같 습 니 다.
//
- (NSString *)flattenHTML:(NSString *)html {
NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString:html];
while ([theScanner isAtEnd] == NO) {
// find start of tag
[theScanner scanUpToString:@"<" intoString:NULL] ;
// find end of tag
[theScanner scanUpToString:@">" intoString:&text] ;
// replace the found tag with a space
//(you can filter multi-spaces out later if you wish)
html = [html stringByReplacingOccurrencesOfString:
[NSString stringWithFormat:@"%@>", text]
withString:@""];
}
MidStrTitle = html;
return html;
}
이렇게 해서 우 리 는 HTML 라벨 을 처 리 했 습 니 다.그러면 문제 가 생 겼 습 니 다.만약 에 우리 가 처리 해 야 할 것 이 많은 HTML 라벨 이 라면 우 리 는 어떻게 처리 해 야 합 니까?이것 이 바로 이 문장의 목적 입 니 다.TFHPple 라 이브 러 리
만약 에 우리 가 다음 과 같은 HTML 소스 코드 중의 특정한 태그 의 내용 을 얻 으 려 면 일부 소스 코드 는 다음 과 같 습 니 다.여 기 는 태그 부분의 내용 만 넣 었 습 니 다.
<title> APP </title>
</head>
<body>
<h3> APP </h3>
<p> </p>
<p> </p>
<h3> </h3>
<p> APP , . :</p>
<ul>
<li> </li>
<li>E-mail: xxxxxxxxxxxxxxxxxxxxxxxxxx</li>
<li>phone: xxxxxxxxxxxxxxxxxx</li>
</ul>
<h3> </h3>
<p> , , .</p>
<p> </p>
<h3> </h3>
<p> </p>
</body>
</html>
여기 서 만약 내 가 목적 성 있 게 어떤 라벨 의 내용 을 찾 으 려 면 오늘 우리 가 소개 한 라 이브 러 리 에 써 야 한다.환경 설정
정적 라 이브 러 리 가 져 오기
그리고 가 져 온 정적 라 이브 러 리 를 파일 의 경로 에 추가 합 니 다.
그리고 가 져 오 면 됩 니 다TFHPple 라 이브 러 리
사용 방법 1,간단 한 탭 형식 값 추출 법
직접 코드
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *filePath =[resourcePath stringByAppendingPathComponent:@"about.html"];
NSData *data =[[NSData alloc]initWithContentsOfFile:filePath];
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //data
NSLog(@"------%@",result);
TFHpple *Hpple = [[TFHpple alloc]initWithHTMLData:data];
// 1:
NSArray *array =[Hpple searchWithXPathQuery:@"//title"]; // title
for (TFHppleElement *HppleElement in array) {
NSLog(@" 1 :-- %@",HppleElement.text);
}
우 리 는 먼저 로 컬 about.html 파일 을 가 져 온 다음 data 로 전환 하고 UTF 8 인 코딩 을 추가 하여 다음 그림 과 같이 볼 수 있 는 것 으로 변환 합 니 다.위 부분 은 HTML 파일 의 원래 탭 이 고 아래 부분 은 우리 가 가 는 탭 은'title'의 내용 입 니 다.이렇게 해서 저희 가 원 하 는 걸 얻 게 됐어 요.
사용 방법 2:자신 속성 이 있 는 탭 내용 추출
위의 그 HTML 파일 은 내용 의 한계 로 인해 우리 가 예 를 들 어 사용 하 는 HTML 태그 원본 코드 는 다음 과 같다.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>hello</title>
</head>
<body>hello world
<span>
</span>
<ul type="disc">
<li> </li>
<li> </li>
<li> </li>
</ul>
<ul type="circle">
<li> 2</li>
<li> 2</li>
<li> 2</li>
</ul>
</body>
</html>
우리 가 찾 고 싶 은 것 은 무질서 목록 노드 속성 이 type 속성 값 이 disc 인 태그 내용 입 니 다.위의 방법 은 우리 의 수 요 를 만족 시 키 지 못 하고 오래된 규칙 에서 코드 를 먼저 올 리 는 것 이 분명 합 니 다.
// 2:
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *filePath =[resourcePath stringByAppendingPathComponent:@"first.html"];
NSData *data =[[NSData alloc]initWithContentsOfFile:filePath];
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //data
NSLog(@"------%@",result);
TFHpple *Hpple = [[TFHpple alloc]initWithHTMLData:data];
NSArray *array =[Hpple searchWithXPathQuery:@"//ul"];
for (TFHppleElement *HppleElement in array) {
if ([HppleElement.attributes[@"type"]isEqualToString:@"disc"]) { // ul type disc
NSArray *array2 = [HppleElement searchWithXPathQuery:@"//li"];
for (TFHppleElement *HppleElement2 in array2) {
NSLog(@" 2 :-- %@",HppleElement2.text);
}
}
}
사용 방법 은 아래 의 이 if 문장의 판단 에 중점 을 둔다.
if ([HppleElement.attributes[@"type"]isEqualToString:@"disc"]) {
}
만약 이러한 조건 에서 의 내용 이 존재 한다 면,이 BOOL 값 에 따라"li"라 고 표 시 된 내용 의 실행 결 과 는 다음 과 같 습 니 다.프로젝트 중 에 만난 구덩이 들
우 리 는 라벨 을 다 지 었 다 고 끝 낼 수 는 없 으 니,가까스로 시간 이 나 면 작은 문 제 를 다시 써 보 자.
사용자 정의 키보드
사용자 정의 키보드 도 오래된 문제 라 고 할 수 있 습 니 다.상황 에 따라 우 리 는 완전히 사용자 정의 키 보드 를 정의 하여 각종 기발 한 수요 에 적응 해 야 할 수도 있 습 니 다.최근 에 코드 를 봤 을 때 서로 다른 사람 이 쓰 는 방법 이 다르다 는 것 을 알 게 되 었 습 니 다.여기 서 개인 적 으로 비교적 간단 하 다 고 생각 하 는 방법 을 소개 해 드 리 겠 습 니 다.
UITextField 의 input View 속성 은 다음 과 같 습 니 다.
kkeyboardView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320 ,260 )] ;
kkeyboardView.backgroundColor = [UIColor lightGrayColor];
[self setUpMyKeyBoard2];
self.textfiled.inputView = kkeyboardView;
View 를 만 들 고 UITextField 의 input View 로 사용 합 니 다.이 럴 때 원 하 는 사용자 정의 키 보드 를 완전히 사용자 정의 할 수 있 습 니 다.제품 은 키보드 에 무엇이 있 는 지 말씀 해 보 세 요.질문
그저께 동료 가 이상 한 문 제 를 말 했 습 니 다.게 으 른 로드 도 썼 고 레이아웃 도 만 들 었 으 며 오프셋 도 설정 되 었 습 니 다.다른 페이지 에서 모두 잘 되 었 습 니 다.이 페이지 의 스크롤 시 도 는 갑자기 움 직 이지 않 았 습 니 다.늙 은 기사 도 차 가 전복 되 어 즐겁게 보 았 지만 문 제 는 어떻게 처리 해 야 합 니까?
-(void)viewDidLayoutSubviews
{
_BaseScore.contentSize = CGSizeMake(SCREEN_WIDTH, 568.0 - 44);
}
한바탕 고생 한 후에 그 에 게 이 방법 을 주 었 다.오프셋 을 이 방법 에 쓰 면 구 를 수 있다.동 료 는 늙 었 다 고 말 하지 않 을 수 없 었 다.자신의 기억 이 점점 나 빠 지 는 것 을 발견 했다.하하,이런 동료 들 이 정말 일 하 는 것 이 즐 거 웠 다.후기
오늘 의 주요 소 개 는 이렇게 많 습 니 다.필요 한 파트너 에 게 도움 이 되 기 를 바 랍 니 다.시간 이 있 으 면 다음 에 쓰 겠 습 니 다.프로젝트 에 사용 되 는 것 은 업 체 측 에서 QR 코드 수금 을 생 성 하고 사용자 측 에서 QR 코드 를 스 캔 하여 지불 하 며 정기 적 으로 갱신 하고 상태 판단,QR 코드 를 스 캔 하여 초대 코드 를 만 드 는 등 일련의 QR 코드 와 관련 된 기능 입 니 다.잘못 쓴 곳 에 대한 환영 지적 이 있 습 니 다.큰 신 이 가볍게 뿌 립 니 다.하하.
보충:두 가지 간단 한 상황 에서 의 방법 을 보충 합 니 다.
Label 의 attributedString 속성
NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[h5str dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
[selflab setAttributedText:attrStr];
웹 뷰 활용
_webView = [[UIWebView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
NSString *html_str = [NSString stringWithFormat:@"<div style='color:red'>666666</div> %@",@" ",@"2020-01-00"];
[self.webView loadHTMLString:html_str baseURL:nil];
[self.view addSubview:self.webView];
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.