2012-01-16 23 views
0

我需要在iOS上創建可滾動複合視圖。也就是說,視圖至少包含一個圖像,可能包含一個按鈕,以及一些文本(我們可能希望用粗體字體等格式化)。數據量,特別是文本數量是可變的,從4行到100可能是不同的。數據在一定程度上是「可變的」,特別是圖像和文本不會在臀部加入。什麼是在iOS上創建可滾動複合視圖的最佳方式

這一切都需要適應在一個只有縱向佈局約280H X115瓦特像素的「窗格」。

單一的UITextView不提供以顯示圖像或格式化文本的設施。

一個UIWebView提供了顯示圖像和格式化文本的能力,但按鈕是一個問題(甚至不知道這是可行的)。

UIScrollView會輕鬆地允許圖像和按鈕,然後可以在文本的滾動視圖中嵌入一個UIWebView,但隨後滾動成爲一個問題 - 我希望整個視圖滾動爲一個,而不需要必須調整Web視圖的大小以包含它的內容,並且不要在可滾動的內容中滾動(文檔警告「意外行爲」)。

(我在這一點猜測你的想法是,我想太多了。)

那麼,有什麼建議?接近我需要的最好方法是什麼?

回答

0

我建議用UIWebViewUIScrollView內部測試。我在iOS 5.0模擬器中看不到任何干擾。我不知道iOS 4.0中是否有問題。

如果您發現有干擾,可以通過Web視圖的userInteractionEnabled屬性設置爲NO防止它,無論是在筆尖或代碼。這將阻止網絡視圖接收任何觸摸,因此用戶也將無法捏捏縮放,跟隨其中的鏈接或從中複製文本。

在網頁視圖的代理中,執行webViewDidFinishLoad:來設置網頁視圖的大小和滾動視圖的contentSize。例如:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    CGRect frame = self.webView.frame; 
    frame.size = [self.webView sizeThatFits:CGSizeMake(frame.size.width, HUGE_VALF)]; 
    self.webView.frame = frame; 
    self.scrollView.contentSize = CGSizeMake(CGRectGetMaxX(frame), CGRectGetMaxY(frame)); 
} 
+0

這聽起來像是一個很好的總體計劃,如果有點冒險。不過,我會看看別人提供什麼。 (我有幾天的時間來決定我的想法。) – 2012-01-16 21:30:59

1

在iOS5的所述的UIWebView具有滾動視圖屬性,這是一個正常的UIScrollView。你應該可以添加一個UIButton作爲scrollview的子視圖來達到你想要的效果,但是正確定位可能是一個挑戰。在iOS5之前,你可以循環瀏覽UIWebView的子視圖,找到帶有isKindOfClass的UIScrollView ...

+0

是的,不幸的是我們需要針對iOS 4和5。所有這些聽起來有點可怕(儘管我承認做得更糟)。 – 2012-01-16 20:42:40

0

當我做了類似的事情時,我有十幾個視圖添加到UIScrollView,然後計算所有的意見。當然,這是一項非常乏味的工作,因爲有些觀點可能在各種條件下隱藏起來。佈局代碼實際上很簡單,從上到下佈置視圖,但很難看。結果是,它像一個魅力,快速和可靠地工作。你甚至可以簡單地將它包裝在一個動畫塊中。

相關問題