UITextView と UILabel は HTML_html/css_WEB-ITnose を読み込みます
はじめに
最近、多くの友人やグループの友人が、UITextView に HTML をロードする方法をよく尋ねます。 UILabel は HTML を読み込むことができますか?または、バックグラウンド インターフェイスに HTML 形式でデータを返すように依頼するにはどうすればよいですか?どうやって対処すればいいのでしょうか?
ここで、著者はこれらの友人やグループの友人からのフィードバックに基づいて小さなデモを作成してみました。これが皆さんのお役に立てれば幸いです。
デモ効果のスクリーンショット
このデモはセルにロードされ、行の高さを自動的に計算する方法を示します。ただし、作成者はより高度な処理を使用せず、sizeThatFits API を直接使用して高さを計算したため、UITextView の行の高さの計算でエラーが発生します。 UITextViewは本質的に上下左右の間隔が異なるため、計算に若干のズレが生じます。
この記事ではロード方法についてのみ説明しており、正確な計算方法については説明しません。
NSAttributedString
を使用して、HTML を設定およびロードできます。ただし、UILabel が HTML をロードできるようにするには、iOS7 以降で使用する必要があります:
- (nullableinstancetype)initWithData:(NSData *)dataoptions:(NSDictionary*)optionsdocumentAttributes:(NSDictionary* __nullable* __nullable)dicterror:(NSError **)errorNS_AVAILABLE(10_0, 7_0);
その中で、オプションで指定されたキーが
UIKIT_EXTERN NSString * const NSDocumentTypeDocumentAttribute NS_AVAILABLE(10_0, 7_0);
の場合、それは可能です値は次のとおりです:
UIKIT_EXTERN NSString * const NSPlainTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSRTFTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSRTFDTextDocumentType NS_AVAILABLE(10_0, 7_0);UIKIT_EXTERN NSString * const NSHTMLTextDocumentType NS_AVAILABLE(10_0, 7_0);
このうち、NSHTMLTextDocumentType は HTML を読み込むように設定されます。
UILabel は HTML を読み込みます
UILabel は iOS6.0 以降、さまざまな描画スタイルを設定するための属性を提供します:
@property(null_resettable,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);
attributedText 属性は iOS6 ですが、これで十分です。ただし、HTML をロードするには、iOS7 以降で使用する必要があります:
// ios 7.0以后才能使用NSData *data = [model.htmldataUsingEncoding:NSUnicodeStringEncoding];NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};NSAttributedString *html = [[NSAttributedString alloc]initWithData:data options:options documentAttributes:nil error:nil];self.htmlLabel.attributedText = html;
UITextView は HTML をロードします
UITextView は、テキスト スタイルを設定するための関連属性も提供します:
@property(null_resettable,copy) NSAttributedString *attributedText NS_AVAILABLE_IOS(6_0);
UILabel と同様に、attributedText 属性は iOS6 でも使用できますが、HTML をロードするには、iOS7 以降で使用する必要があります。
// ios 7.0以后才能使用NSData *data = [model.htmldataUsingEncoding:NSUnicodeStringEncoding];NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};NSAttributedString *html = [[NSAttributedString alloc]initWithData:data options:options documentAttributes:nil error:nil];self.textView.attributedText = html; // 加载HTML后,还要设置行高约束,否则高度就是0CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;[self.textViewmas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo([self.textViewsizeThatFits:CGSizeMake(screenWidth - 20, CGFLOAT_MAX)].height);}];
HTML をロードした後、次の設定も行う必要があります。ただし、sizeThatFits: この API は UITextView の高さの計算が正確ではなく、特定のエラーがあることに注意してください。
最後に
ところで、属性に指定するnull_resettableの型とは何でしょうか?これは新しい機能であり、英語の観点からは、null 可能で再構成可能な値 を意味すると言えます。
ソース コード
この記事に関連する小さなデモは参考としてのみダウンロードできます。
ダウンロード アドレス: CoderJackyHuang 著者の GITHUB アドレスと Biao Ge のテクノロジー ブログのフォローを歓迎します。
フォローしてください
关注 | 账号 | 备注 |
---|---|---|
Swift/ObjC技术群一 | 324400294 | 群一若已满,请申请群二 |
Swift/ObjC技术群二 | 494669518 | 群二若已满,请申请群三 |
Swift/ObjC技术群三 | 461252383 | 群三若已满,会有提示信息 |
关注微信公众号 | iOSDevShares | 关注微信公众号,会定期地推送好文章 |
关注新浪微博账号 | 标哥Jacky | 关注微博,每次发布文章都会分享到新浪微博 |
关注标哥的GitHub | CoderJackyHuang | 这里有很多的Demo和开源组件 |
关于我 | 进一步了解标哥 | 如果觉得文章对您很有帮助,可捐助我! |
著作権表示: この記事は [Brother Biao's Technology Blog] のオリジナル製品です。転載する場合は出典を明記してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

webdevelopmentReliesOnhtml、css、andjavascript:1)htmlStructuresContent、2)cssStylesit、および3)Javascriptaddsinteractivity、形成、

Y軸位置Webアノテーション機能の適応アルゴリズムこの記事では、単語文書と同様の注釈関数、特に注釈間の間隔を扱う方法を実装する方法を探ります...

GiteEpages静的Webサイトの展開が失敗しました:404エラーのトラブルシューティングと解像度Giteeを使用する

画像をクリックした後、散乱と周囲の画像を拡大する効果を実現するには、多くのWebデザインがインタラクティブな効果を実現する必要があります。特定の画像をクリックして周囲を作成してください...

HTML、CSS、およびJavaScriptは、Web開発の3つの柱です。 1。HTMLは、Webページ構造を定義し、などなどのタグを使用します。2。CSSは、色、フォントサイズなどのセレクターと属性を使用してWebページスタイルを制御します。
