2014-11-21 64 views
3

我有一個UITableView以模態方式呈現在視圖上。表格視圖中的一個單元格是故意透明的,以便下方的視圖可見。問題是IOS 7.1單元開始透明,然後立即變得不透明。在iOS 8下,透明單元技術完美運行。iOS7 UITableViewCell背景透明度在短暫暫停後變得不透明

Qn。有沒有人看到這個,並提出一個有效的解決方法?

事情我已經試過

  • 調整cell.backgroundColor
  • 調整cell.backgroundView
  • 調整tableView.backgroundColor
  • 調整tableView.backgroundView

  • 設置的tableView .opaque = YES;

  • 使得調整在的tableView:的cellForRowAtIndexPath:

  • 結交的tableView的調整:willDisplayCell:forRowAtIndexPath:

  • 採用全透明膠片

  • 使用部分透明膠片
  • 使用的透明圖像

  • [[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]];

基本上,一旦任何透明度被引入到背景中,它會發生變化(稍微暫停後變爲不透明)。

enter image description here

再次重申iOS7下的透明性是有非常短暫地(少於1/2秒),那麼它變成不透明的。

這裏的效果VIMEO:Link

回答

1

而不是集中於所述的tableview和它的細胞中,看所述呈現(底部)視圖控制器。我相信(儘管目前我找不到正式記錄),當您對一個視圖控制器進行標準模態呈現時,呈現視圖控制器的視圖將在呈現後從視圖層次結構中移除。使用一個簡單的測試應用程序,呈現視圖控制器的-viewWillDisappear:被調用,並記錄關鍵窗口的-recursiveDescription顯示呈現視圖控制器的視圖已被刪除。但是,如果您使用自定義轉換,呈現視圖控制器的視圖將保留在原位(大概是爲了實現這種透明效果)。 1)說明標準和自定義模態表示之間的行爲差​​異,以及2)顯示如何構建一個基本的UINavigationController子類來解決它們之間的差異問題(例如:https://github.com/sjc/ViewControllerTransitionExample)這個問題(該技術通常只適用於直UIViewController子類)。

然而......雖然這可以用來解決這個問題,但它並不回答'這裏發生了什麼?問題,因爲這個例子並沒有完全重現你所看到的:在原始問題中描述的情況下,呈現視圖控制器在iOS 7和8上消失,而不僅僅在7上消失。好吧。

+0

我已將您的自定義轉換導航控制器連接到我的應用程序並且工作正常!我不知道你的例子爲什麼iOS7和iOS8的「正常」轉換失敗。但是你解決了我的問題。非常感謝。 – Damo 2014-11-25 14:33:19

1

嘗試從外觀系統在的AppDelegate

[[UITableViewCell appearance] setBackgroundColor:[UIColor clearColor]]; 
+0

感謝您的回答。我現在試過了,沒有區別。我會用這個已經嘗試過的事實來更新這個問題。 – Damo 2014-11-25 09:29:09

+0

嗨,我已經創建了一個非常基本的示例http://youtu.be/3RbdyGYZcvI,請確認這是否您需要。表視圖有三個單元格,第一個單元格是透明的。 – Ammar 2014-11-25 12:46:18

+0

是的 - 但請參閱@dasdom答案 - 它需要在iOS7以及iOS8下工作 – Damo 2014-11-25 13:09:54

1

改變表格單元格這不會在iOS 7的工作,因爲模態視圖總是不透明的。在iOS 8上,它們可以是透明的。 你將不得不在iOS 7上找到另一個解決方案。

這似乎工作1/2秒是因爲模態視圖在過渡期間不是不透明的。

+0

有用於瞭解 - 「模態視圖在轉換過程中不是不透明的。」 – Damo 2014-11-25 14:00:01