2012-05-25 48 views
0

我正在使用EGO拉動和刷新代碼,如here所述,以實現「下拉​​刷新」功能到UIWebView。所有工作正常,直到我放大webView。拉下來刷新UIWebView(縮放問題)

如果我將子項添加到webView.scrollView,它可以很好地滾動,但不會在webView縮放時調整大小。它保持絕對相同的尺寸。如果我將autoresizeMask設置爲FlexibleWidth或將autoresizeSubviews設置爲YES。

編輯:

這也就是說,我的問題是:WHY視圖內容縮放OK,而我自己的看法,加入到同一個地方(在UIWebView)不?另外,它爲什麼滾動確定,但不縮放?

enter image description here

+0

Web視圖縮放發生在Web視圖內,因此調整大小不是Web視圖框架或滾動視圖框架,因此您的EGO視圖不會調整大小。 – Matt

+0

這是不正確的。 'UIWebView'包含'UIScrollView'。滾動視圖包含呈現webView內容的組件和我剛剛添加的一個組件(EGO視圖或任何其他視圖)。它是經理縮放的「UIScrollView」。你可以通過查看'UIScrollView'的'zoomScale'屬性來確保它 - 在縮放時它正在改變。 –

+0

正確,但縮放是對內容大小的調整,而不是滾動視圖的實際框架大小。 – Matt

回答

0

這是更多的解釋什麼是比的方式來實現你的預期行爲回事:

滾動視圖有一個框架,其本質上是觀察窗到內容滾動包含視圖。當您將子視圖添加到滾動視圖時,該視圖將被「添加」(實現不清楚)到滾動視圖的內容視圖中,該視圖通常大於滾動視圖的框架。滾動視圖的內容偏移量以及滾動視圖框架的大小決定了內容視圖的哪一部分是可見的。當你縮放網頁視圖時,內容視圖的大小正在改變,但是你的EGO視圖不會得到調整大小的消息,因爲內容視圖不是一個真正的UIView,或者滾動視圖以某種方式阻止了它的子視圖的大小調整猜測實施)。這是預料之中的,因爲您可能需要調整滾動視圖內部的內容以及擴展組合內容的大小,而不調整每個單獨部分的大小。

有可能比下面的建議更簡單的方法:

如果你不處理Web視圖,只有一個滾動視圖,你可以繼承的UIScrollView並重寫setContentSize手動調整你的自我視圖,它。但是,由於您不能只交換Web視圖內的滾動視圖,因此可以使用方法調換來替換Web視圖滾動視圖的setContentSize方法的實現。但是,如果我是你,我會考慮爲什麼你希望EGO視圖首先調整大小。它不是Web視圖內容的一部分,但是用戶可以採取的操作來修改該內容......所以您似乎希望它保留可讀/可用的大小。 YOu也可能會考慮Web視圖的內容,並且您是否需要允許用戶首先調整它的大小。使用標準新聞Feed時,將它鎖定到理想的觀看尺寸可能會更好。

編輯:

查看圖後,它看起來像你想是不是要調整自我的看法,但改變它的位置,這是在你的Web視圖的頂部始終圍繞什麼。最安全的方法是成爲Web視圖滾動視圖的代表,跟蹤任何原始代表(獨立實現(在某種程度上)),並將所有協議方法轉發給原始代理。然後,在scrollViewDidScroll方法(和/或scrollViewDidZoom等等)中,可以將EGO框架的origin.x設置爲contentOffset.x。