2012-10-19 27 views
1

考慮以下,我有段數據被髮送到需要被放置在背景圖像的視圖,其具有在頂部和底部,固定元件(FIG1)UILables,文本流和佈局

圖。1。 UIView Showing text flow and fixed elements

我的想法是把它分成4個標籤(Fig1.example2)我的問題在於我如何讓文本流過標籤1 - 4給定標籤1,2 & 3 ar的固定高度。我在這裏假設標籤3應該在4之前填充,因此附圖中的佈局。

可有人建議用也許一個例子這樣做的最佳方式?

感謝

+0

什麼IOS版本,你定位? – Matt

+0

@Matt iOS 5.1正在定位 –

+1

可能重複[如何繪製一個非矩形uitextview?](http://stackoverflow.com/questions/9270997/how-to-draw-a-non-rectangle-uitextview) –

回答

2

希望我能幫助更多的,但我想我至少可以點你在正確的方向。

首先,你的想法似乎很可能的,但會涉及到大量的文字大小的計算,這將是醜陋的,可能不會產生理想的結果。我看到它的工作方式是使用sizeWithFont對字符串的測試部分進行二分法搜索:直到您可以對標籤適合該尺寸並仍然看起來「正確」的最佳猜測。然後,你必須真正地分解字符串並將它分成幾部分......看起來似乎錯了。

在iOS 6中(遺憾的是不適合你,但現在我會後它作爲一個潛在的好處給別人),你很可能使用一個的UILabel和NSAttributed字符串。在這裏會有幾個選項,(我沒有這樣做,所以我不確定哪個是最好的),但似乎如果你可以用html格式化頁面,你可以初始化屬性字符串那樣。

從文檔: 您可以使用初始化方法initWithHTML創建一個來自HTML數據的屬性字符串:documentAttributes:和initWithHTML:baseURL:documentAttributes :.這些方法返回由HTML定義的文本屬性作爲字符串的屬性。它們返回由HTML定義的文檔級別的屬性,如紙和邊距大小,通過參考一個NSDictionary對象,如描述於「RTF文件和歸因字符串」的方法轉化HTML以及可能的入可可文本的結構系統,但Application Kit不提供任意HTML的完整,真實呈現。這裏

另一種方法是隻使用可用的屬性,設定行縮進並且這樣根據圖像尺寸。我沒有在這個級別使用屬性字符串,所以我最好的參考是開發者視頻和NSAttributedString的編程指南。 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/AttributedStrings/AttributedStrings.html#//apple_ref/doc/uid/10000036-BBCCGDBG

對於較低版本的iOS,你可能會更好熟悉CoreText。最後,你會得到更好的結果,可重用性/靈活性,名單繼續。爲此,我將從CoreText編程指南開始:https://developer.apple.com/library/mac/#documentation/StringsTextFonts/Conceptual/CoreText_Programming/Introduction/Introduction.html

也許其他人可以提供一些示例代碼,但我認爲通過查看文檔可以讓您比計算4個標籤更輕鬆。

編輯: 我改變了鏈接CoreText

+0

我之前沒有使用過歸屬字符串,但如果它們能夠工作,那麼Mattt Thompson的TTTAttributedLabel將允許您使用NSAttributed字符串在iOS 4和5上。Github:https://github.com/mattt/TTTAttributedLabel文檔:http://mattt.github.com/TTTAttributedLabel/ – MaxGabriel

+0

是的,TTTAttributedLabel可能是一個可行的解決方案,雖然它不包括就我所知,initWithHTML方法可能不支持足夠的段落樣式屬性。然而,Rob Mayoff的例子是他使用CoreText來實現這種行爲的一個好方法。由於其更高級別的功能,我建議將標籤歸爲可能的替代品。此外,在該主題中,還有一條建議使用Webviews的評論......這是使用html完成佈局的絕對方法。 – Matt