html 텍스트를 텍스트 뷰에 html 텍스트 표시
HTML 텍스트를 텍스트 보기에 표시하려면 어떻게 해야 합니까?
예를들면,
string <h1>Krupal testing <span style="font-weight:
bold;">Customer WYWO</span></h1>
텍스트가 굵게 표시되어 텍스트 보기에 굵은 문자열로 표시되지만 일반 텍스트를 표시한다고 가정합니다.아이폰 SDK에서 가능합니까?
ios 7+에는 다음 코드 블록을 사용합니다.
NSString *htmlString = @"<h1>Header</h1><h2>Subheader</h2><p>Some <em>text</em></p><img src='http://blogs.babble.com/famecrawler/files/2010/11/mickey_mouse-1097.jpg' width=70 height=100 />";
NSAttributedString *attributedString = [[NSAttributedString alloc]
initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding]
options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes: nil
error: nil
];
textView.attributedText = attributedString;
스위프트 4, 스위프트 4.2: 및 스위프트 5의 경우
let htmlString = """
<html>
<head>
<style>
body {
background-color : rgb(230, 230, 230);
font-family : 'Arial';
text-decoration : none;
}
</style>
</head>
<body>
<h1>A title</h1>
<p>A paragraph</p>
<b>bold text</b>
</body>
</html>
"""
let htmlData = NSString(string: htmlString).data(using: String.Encoding.unicode.rawValue)
let options = [NSAttributedString.DocumentReadingOptionKey.documentType: NSAttributedString.DocumentType.html]
let attributedString = try! NSAttributedString(data: htmlData!, options: options, documentAttributes: nil)
textView.attributedText = attributedString
Swift 3의 경우:
let htmlString = """
<html>
<head>
<style>
body {
background-color : rgb(230, 230, 230);
font-family : 'Arial';
text-decoration : none;
}
</style>
</head>
<body>
<h1>A title</h1>
<p>A paragraph</p>
<b>bold text</b>
</body>
</html>
"""
let htmlData = NSString(string: htmlString).data(using: String.Encoding.unicode.rawValue)
let attributedString = try! NSAttributedString(data: htmlData!, options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType], documentAttributes: nil)
textView.attributedText = attributedString
iOS 5-에서 UI WebView를 사용합니다.
iOS 6+에서 사용할 수 있습니다.UITextView.attributedString
방법은 https://stackoverflow.com/a/20996085 을 참조하십시오.
또한 문서화되지 않은 것도 있습니다. -[UITextView setContentToHTMLString:]
방법.AppStore에 제출하려면 이 옵션을 사용하지 마십시오.
BHUPI의 답변은 정확하지만, UILabel 또는 UITextView의 사용자 정의 글꼴을 HTML 콘텐츠와 결합하려면 HTML을 약간 수정해야 합니다.
NSString *htmlString = @"<b>Bold</b><br><i>Italic</i><p> <del>Deleted</del><p>List<ul><li>Coffee</li><li type='square'>Tea</li></ul><br><a href='URL'>Link </a>";
htmlString = [htmlString stringByAppendingString:@"<style>body{font-family:'YOUR_FONT_HERE'; font-size:'SIZE';}</style>"];
/*Example:
htmlString = [htmlString stringByAppendingString:[NSString stringWithFormat:@"<style>body{font-family: '%@'; font-size:%fpx;}</style>",_myLabel.font.fontName,_myLabel.font.pointSize]];
*/
NSAttributedString *attributedString = [[NSAttributedString alloc]
initWithData: [htmlString dataUsingEncoding:NSUnicodeStringEncoding]
options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
documentAttributes: nil
error: nil
];
textView.attributedText = attributedString;
아래 그림에서 차이를 확인할 수 있습니다.
OH Attributed Label 클래스를 볼 수 있습니다. textField에서 이러한 문제를 해결하기 위해 사용했습니다.이 경우 필요한 스타일을 얻기 위해 drawRect 메서드를 재정의했습니다.
https://github.com/AliSoftware/OHAttributedLabel
iOS 7이 공통 컨트롤에서 속성 문자열을 표시하는 것을 명시적으로 지원하기 전에 저의 첫 번째 응답이 이루어졌습니다.이제 설정할 수 있습니다.attributedText
의UITextView
완전히NSAttributedString
다음을 사용하여 HTML 컨텐츠로 작성:
-(id)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary **)dict error:(NSError **)error
initWithData:옵션:documentAttributes:오류:(AppleDoc)
원본 답변, 역사를 위해 보존됨:
를 사용하지 않는 한UIWebView
귀사의 솔루션이 직접적으로 의존할 것입니다.CoreText
Elanthiraiyan S가 지적했듯이 리치 텍스트 렌더링을 단순화하기 위한 일부 오픈 소스 프로젝트가 등장했습니다.추천합니다.
NSA에서 HTML에 대한 문자열 추가(편집: 프로젝트가 DTCoreText로 대체됨), HTML에서 속성 문자열을 생성하고 표시하는 클래스를 특징으로 합니다.
BHUPI의 답변이 저에게 적합했습니다.
아래와 같이 swift로 코드 전송:
주의: "손실 변환 허용: false"
값을 true로 설정하면 순수 텍스트가 표시됩니다.
let theString = "<h1>H1 title</h1><b>Logo</b><img src='http://www.aver.com/Images/Shared/logo-color.png'><br>~end~"
let theAttributedString = try! NSAttributedString(data: theString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
UITextView_Message.attributedText = theAttributedString
스위프트3용
let theString = "<h1>H1 title</h1><b>Logo</b><img src='http://www.aver.com/Images/Shared/logo-color.png'><br>~end~"
let theAttributedString = try! NSAttributedString(data: theString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!,
options: [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType],
documentAttributes: nil)
UITextView_Message.attributedText = theAttributedString
경우에 따라 UI WebView가 좋은 솔루션입니다.이유:
- 테이블, 이미지, 기타 파일을 표시합니다.
- 빠른 속도(NSA 속성 문자열과 비교: NSHTMLTextDocumentType)
- 그것은 개봉한 것입니다.
HTML이 복잡하거나 테이블을 포함하는 경우 NSA TributedString을 사용하면 충돌이 발생할 수 있습니다(예:
웹 보기에 텍스트를 로드하는 경우 다음 스니펫(예만)을 사용할 수 있습니다.
func loadHTMLText(_ text: String?, font: UIFont) {
let fontSize = font.pointSize * UIScreen.screens[0].scale
let html = """
<html><body><span style=\"font-family: \(font.fontName); font-size: \(fontSize)\; color: #112233">\(text ?? "")</span></body></html>
"""
self.loadHTMLString(html, baseURL: nil)
}
한 가지 방법을 더 사용할 수도 있습니다.Three20 라이브러리는 스타일이 지정된 textView를 구성할 수 있는 방법을 제공합니다.도서관은 여기서 구할 수 있습니다: http://github.com/facebook/three20/
TTStyledTextLabel 클래스에 textFromX라는 메서드가 있습니다.HTML: 제 생각에는 이것이 목적에 부합할 것 같습니다.그러나 읽기 전용 모드에서는 가능합니다.HTML 콘텐츠를 쓰거나 편집하는 것은 허용되지 않을 것 같습니다.
이와 관련하여 도움이 될 수 있는 질문이 있습니다. UILabel 및 TextView용 HTML String 컨텐츠입니다.
도움이 되길 바랍니다.
NSDoc은 문자열의 텍스트 파일을 html 파일에 저장한 다음 UITtextView와 동일한 위치에 있는 웹 뷰에 동시에 로드합니다.
언급URL : https://stackoverflow.com/questions/2454067/display-html-text-in-uitextview
'prosource' 카테고리의 다른 글
자바스크립트에서 언제, 왜 '거짓'을 반환해야 합니까? (0) | 2023.09.10 |
---|---|
저장 프로시저의 조건부 간격 (0) | 2023.09.05 |
자바스크립트에서 상수 객체를 변경할 수 있는 이유는 무엇입니까? (0) | 2023.09.05 |
PDF 문서에서 텍스트를 추출하는 방법은 무엇입니까? (0) | 2023.09.05 |
배열에서 다른 배열에 없는 요소를 찾기 위한 Javascript 알고리즘 (0) | 2023.09.05 |