텍스트보기에서 HTML 텍스트를 어떻게 표시 할 수 있습니까?
예를 들면
string <h1>Krupal testing <span style="font-weight:
bold;">Customer WYWO</span></h1>
텍스트가 굵게 표시되어 textview에 굵은 문자열로 표시되지만 일반 텍스트를 표시하고 싶다고 가정합니다. iPhone SDK에서 가능합니까?
답변
iOS 5에서 UIWebView를 사용합니다.
iOS 6 이상에서는을 사용할 수 있습니다 . 방법 UITextView.attributedString
은 https://stackoverflow.com/a/20996085 를 참조 하세요 .
도 있습니다 문서화되지 않은 -[UITextView setContentToHTMLString:]
방법. AppStore에 제출하려면 이것을 사용하지 마십시오.
답변
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
대한 스위프트 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
답변
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;
답변
OHAttributedLabel 클래스를 살펴볼 수 있습니다.이 클래스를 사용하여 textField에서 이러한 종류의 문제를 극복했습니다. 여기에서 필요한 스타일을 얻기 위해 drawRect 메서드를 재정의했습니다.
답변
첫 번째 응답은 iOS 7이 공통 컨트롤에 속성 문자열을 표시하기위한 명시적인 지원을 도입하기 전에 만들어졌습니다. 당신은 지금 설정할 수 attributedText
의 UITextView
를 NSAttributedString
사용하여 HTML 내용에서 만든 :
-(id)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary **)dict error:(NSError **)error
-initWithData : options : documentAttributes : error : (Apple Doc)
역사를 위해 보존 된 원래 답변 :
를 사용하지 않는 한 UIWebView
솔루션은 CoreText
. ElanthiraiyanS가 지적했듯이 리치 텍스트 렌더링을 단순화하기 위해 일부 오픈 소스 프로젝트가 등장했습니다. 내가 추천 할 것입니다 NSAttributedString은-추가를 위해 HTML ( 편집 : 이 프로젝트는 대체 된 DTCoreText를 ) 생성 및 디스플레이가 HTML에서 문자열을 기인하는 클래스를 제공한다.
답변
대답은 BHUPI에서 나에게 적합합니다.
코드는 아래와 같이 신속하게 전송됩니다.
“allowLossyConversion : 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