2016-08-12 1 views
0

Мне нужно создать приложение, которое имеет 5 UIViewControllers, каждый с большим текстом и изображениями внутри текста. То, что я сделал до сих пор, заключается в том, чтобы добавить UITextView в UIViewController и загрузить с помощью файла rtf весь текст (каждый текст большой).Структурирование UIViewControllers с изображениями внутри текста

Теперь мне нужно добавить изображения внутри текста в некоторых местах. Что вы предлагаете, это может быть лучший способ его построить? Я попытался добавить изображение внутри файла rtf, но он работает неправильно. Поскольку текст слишком большой, я не хотел добавлять текст вручную, набрав его. Кроме того, у меня есть меню верхнего планшета, которое разрешает просмотр каждому контенту, поэтому я должен был иметь только один UITextView. Я ищу лучшее решение.

ответ

2

Как добавить ваши тексты с изображениями в UIWebView с загрузкой этих текстов путем их переноса в html?

Вы также можете добавить JavaScript обратных вызовов, которые вы будете в состоянии справиться с быстрым или Obj-C путем добавления JavascriptCore.framework к вашей сборке фаз:

Добавить кнопку в вашем коде:

<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

Вы можете добиться этого с помощью NSAttributedString и NSTextAttachment. Атрибутивные строки - это строки с прикрепленным форматированием (жирным шрифтом, курсивом, цветами и т. Д.), Но вы также можете прикреплять изображения внутри атрибутивных строк, и они просто рисуются прямо вместе с текстом. Ниже приведен пример, который может вам помочь:

//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

Да, но все же я должен ввести весь текст внутри строки (string: ""). И мой текст слишком велик. – user3882720

Смежные вопросы