2011-03-14 58 views
0

我對Cocoa相當陌生,並且遇到困難Google搜索設計我的iPhone應用程序的最佳方式。Cocoa Touch:顯示一個結構化的文檔

此應用程序用於查看舞臺劇。它應該很好地打印腳本,使得字符標題居中,並且以小寫字母表示,並且舞臺方向以斜體等等。它還應該允許突出顯示一個字符的行(即動態格式化)。

看着this question它看起來像NSTextView/NSTextStorage將提供我想要的格式要求,我只是混淆瞭如何構建基礎數據視圖。

我想,此刻我的源將XML的格式如下:

<script> 
    <dialogue character="bob">Hello Sue!</dialogue> 
    <stageDirection>He moves to the table</stageDirection> 
    <dialogue character="sue">Hello Bob!</dialogue> 
</script> 

這將類似於下面的輸出:

 BOB 
Hello Sue! 

    He moves to the table 

     SUE 
Hello Bob! 

如何從去一個文檔模型(XML/CoreData/...)包含相當格式化的文本?

任何意見或指針將是巨大的;我無法解決這個問題!

+0

NSTextView是一個可可類,在CocoaTouch中不可用。你不能在iPhone應用程序中使用這個類。 – sosborn 2011-03-14 12:47:52

回答

1

如果不需要交互那麼最簡單的方法我能想到的是生成HTML與UIWebView渲染。動態高亮可以stringByEvaluatingJavaScriptFromString:

UPDATE

下一個比較容易的選擇是組合與個別UILabel小號樣式的文本來完成。基本上你有一系列文字輸入(線索,舞臺方向等),每個都有自己的風格。我們創建一個應用了樣式的相應UILabel的數組,然後在「腳本視圖」上進行佈局。之後,我們可以將這個「腳本視圖」放在UIScrollView就是這樣。符合特定文本所需的標籤尺寸可以使用NSStringsizeWithFont:constrainedToSize:lineBreakMode:來確定。

也有CoreText提供的服務,但是這是更高級的選項。

+0

如果可能,我寧願使用Cocoa的原生文本格式化方法,而不使用HTML。這是我願意考慮的選項。 – 2011-03-14 12:09:42

+0

我明白了。問題是'NSTextView'在Cocoa Touch中的對應部分是'UITextView',它不支持文本部分的單獨樣式。 – hoha 2011-03-14 14:57:38

+0

我認爲你的第二個選擇是我會去的。似乎最符合我的用例。謝謝 :) – 2011-03-30 13:12:47