2011-07-15 96 views
4

我有文本的幾小段,我想文字在我的應用程序的視圖圖像周圍的地點周圍。通常情況下,圖像將位於文本的左側,文本將按照您通常的預期流動。圖像具有不同的高度和寬度,尺寸方面,4-30kb png文件。文本的長度各不相同,可以在2到幾個段落之間。有文本標記,因此可以對不同的行進行相應的格式化。的iOS纏繞圖像

我一直在我的UIView中使用UIWebView以最快的方式做到這一點,但我注意到,即使我的文本和圖像是本地的,當UIWebView加載和顯示圖像時會有明顯的延遲和文本。基本上,您將視圖區域留爲空白,然後稍後片刻,您會看到圖像加載。大多數情況下,文本顯示爲在圖像之前加載。

我使用UIWebView's 'loadHTMLString'加載本地HTML文本和圖像。

我想實現類似於:

| [  ] | Some text starts here and is long enough to fil until the end of the line. Then 
| [image] | the text continues so it wraps around a few more lines to fit the entire 
| [  ] | height of the image. 
Eventually, we'll show the text below the image, just like you see in a newspaper. 
The content would continue at variable length for the rest of the screen. 

有沒有更好的方式來顯示圖像與格式文本?如果有比UIWebView更好的東西,我很樂意接受這一點。

+0

在那裏你不能只用一個HTML文件中的原因是什麼? – Sum

+0

該文本本地存儲爲html,但在UIWebView顯示圖像時看到延遲。我想擺脫延遲。 –

+0

你有沒有嘗試在背景中創建UIWebView,並保持它直到你需要它? – Steve

回答

1

我覺得你的基本策略應(1)嘗試獲得的UIWebView的性能到可接受的水平;(2)如果失敗了,這是非常重要的,推出自己的文本佈局代碼。

一些想法:

  • 嘗試將其顯示在屏幕上之前儘可能早地將內容加載到UIWebView類。
  • 查看是否使用內嵌樣式(而不是鏈接的樣式表)改善負載時間。
  • 查看是否使用內聯的圖像(通過使用<img src="data:...")改善負載時間。

如果這些都不起作用,並且想要推出自己的產品,則必須編寫自己的文本佈局代碼。你可以使用的NSString的UIKit的增加可能做到這一點:拆分文本的話,計算(使用sizeWithFont:)每個字的大小,並奠定了由行的文本行。您應該逐字逐句計算,但實際上一次繪製一整行,應該表現更好。或者你也許可以在正確的位置插入換行符來創建一個新字符串,並一次繪製整個事物。

祝你好運!

0

嘗試以下方法。這是不CoreText和HTML

UIBezierPath * imgRect = [UIBezierPath bezierPathWithRect:CGRectMake(0,0,100,100)];

UIImageView *imageView= [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)]; 
imageView.image=[UIImage imageNamed:@"defaultImage"]; 
[self.textView addSubview:imageView]; 
self.textView.textContainer.exclusionPaths = @[imgRect]; 
+0

@Stephan Keene這是完美的爲您的要求。 – cmp