2016-08-12 5 views
0

5,UIViewControllersという大きなテキストとイメージを持つアプリケーションを作成する必要があります。私がこれまで行ってきたことは、UIViewControllerUITextViewを追加し、rtfファイルをテキスト全体(すべてのテキストが大きい)で読み込むことでした。イメージ内にイメージを持つUIViewControllerを構造化する

ここでは、テキスト内の画像をいくつかの場所に追加する必要があります。あなたがそれを構築する最良の方法であると思われるものは何ですか? rtfファイルの中にイメージを追加しようとしましたが、正しく動作しません。テキストが大きすぎるので、私は手動でテキストを入力して追加したくありませんでした。また、私は各コ​​ンテンツにビューをスライドするトップバーメニューを持っています。そのため、1つだけ持っていなければなりませんUITextView。私は最高のソリューションを探しています。

答えて

2

これらのテキストをHTMLにラップして読み込んだ状態で、UIWebViewで画像を含むテキストを追加するとどうなりますか?

また、あなたはあなたのビルドフェーズにJavascriptCore.frameworkを追加することにより、迅速またはOBJ-Cで処理することができますjavascriptのコールバックを追加することができます。

はあなたのコード内のボタンを追加します。

<button text="Close" onclick="javascript:callSwiftCode()">Call swift code</button> 

そして、あなたのUIWebViewDelegateクラスで:

func webViewDidFinishLoad(webView: UIWebView) { 
    let context: JSContext = webView.valueForKeyPath("documentView.webView.mainFrame.javaScriptContext") as! JSContext 

    let codeClosure: @convention(block)()->() = {()->() in 
     print ("This is callback from javascript you can add your code in this closure") 
    } 

    let casted: AnyObject = unsafeBitCast(codeClosure, AnyObject.self) as AnyObject 
    context.setObject(casted, forKeyedSubscript: "callSwiftCode") 
} 
+0

これはとても良いアイデアです。ご回答いただきありがとうございます。しかしもう一つのこと。他の画像を開くボタンをhtmlファイルに追加できますか?それは可能ですか? – user3882720

+0

これはHTMLで直接行うことができます。あなたのアプリケーションのネイティブコードに(別のもののために)適切なフックを持たせたいなら、 'WKWebView'と' WKUserContentController'の 'addScriptMessageHandler:name:'メソッドを使ってJavaスクリプトリスナをインストールすることをお勧めします。 – Gero

+0

はい。編集後の投稿 –

0

あなたはこのNSAttributedStringNSTextAttachmentを使用して達成することができます。アトリビュートされた文字列は、書式設定(太字、斜体、色など)が付いた文字列ですが、アトリビュートされた文字列内にイメージを添付することもできます。以下の例は、理解を深めるのに役立ちます。

//Create a mutable attributed string so that we could append everything to it. 
let bigText = NSMutableAttributedString(string: "Your text starts here") 

//Create a NSTextAttachment 
let image1Attachment = NSTextAttachment() 
image1Attachment.image = UIImage(named: "image1.png") 

// wrap the attachment in its own attributed string so we can append it 
let image1String = NSAttributedString(attachment: image1Attachment) 

// add the NSTextAttachment wrapper to our full string, then add some more text. 
bigText.appendAttributedString(image1String) 
bigText.appendAttributedString(NSAttributedString(string: "End of text")) 

// Then set this bigText to your label's attributedText property. 
yourLabel.attributedText = bigText 
+0

はい、それでもなお、(文字列: "")の中にテキスト全体を入力する必要があります。そして私のテキストは大きすぎます。 – user3882720

関連する問題