2012-06-01 60 views
1

看起來,UIWebView包含在分割視圖控制器中的視圖控制器中,Web視圖將自身報告爲縱向模式,從CSS3媒體查詢的角度看,它具有768像素寬的視口。UISplitViewController中斷媒體查詢。解決方法?

我已經構建了幾個最小測試用例應用程序來重現此bug /功能。當Web視圖位於作爲窗口根視圖的視圖控制器中時,它不存在。如果分割視圖控制器位於標籤欄控制器內部,它也不存在。您甚至可以將Web視圖承載視圖控制器放置在分割視圖控制器的詳細信息窗格內的標籤欄控制器內,並避免此錯誤。

但是,我想簡單地有一個分割視圖控制器,它是窗口的根視圖,幷包含一個詳細視圖控制器,但仍然正確地承認媒體查詢。有誰知道一種方法來實現這一目標?

我試着:

  • 重寫詳細視圖控制器的parentViewController屬性(返回nil
  • 重寫詳細視圖控制器的splitViewController屬性(同上)
  • 重寫詳細視圖控制器的didRotateToInterfaceOrientation方法
  • 覆蓋詳細視圖控制器的方法willRotateToIntefaceOrientation方法

我調查:

  • 使用不同的媒體查詢
  • 使用第三方拆分視圖替換(例如MGSplitViewController)
  • 手動注射用JavaScript

如果任何人遇到了這個問題,並想出了一個解決方案適當的樣式表,請讓我知道。

回答

1

事實證明,它不是導致縱向/橫向混合的分割視圖控制器本身(或標籤欄控制器,就此而言)。

基本上,如果一個UIWebView比寬度更高,操作系統會認爲它處於縱向模式,如果寬度比它高,操作系統會認爲它處於橫向模式。

標籤欄控制器的存在足以使高度(768-20-49 = 699)略小於寬度(1024-320-1(gutter)= 703)。

+0

你怎麼能解決這個問題?您是否能夠通過Web視圖來「正確」佈置頁面? – tentmaking

+0

您可以使用[縱橫比](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries#aspect-ratio)查詢(而不是方向)來微調從縱向到橫向的比例。 –