iOS 분석 HTMl 태그 및 개발 중인 구덩이

9784 단어 ioshtml 태그
시작 하 다
업데이트 날 짜 를 보고 오 랜 만 에 약 서 를 썼 습 니 다.항상 친구 들 이 글 아래 에서 댓 글 을 달 았 습 니 다.자신 이 쓴 것 을 보면 도움 이 되 었 습 니 다.자신 을 격려 하고 계속 견 뎌 내 도록 하 세 요.하하.오늘 은 주로 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];
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기