2014-10-22 31 views
1

我有一個帶有三個動態行的UITableView。當第一次顯示UITableViewController時,一切正常。旋轉之後,儘管我將setLayoutMargins設置爲零,但其中包含數據的行仍會得到縮進。直到現在,我無法在另一個項目中重現此問題。它只出現在iOS 8中,但只在一張桌子上。表格的相同來源在測試項目中正常工作,沒有問題。這裏唯一的區別是它在一個容器中有其他一些視圖。UITableViewCell的縮進僅在iOS 8上旋轉後才發生變化

我檢查了自動佈局約束,旋轉方法,評論事情 - 都沒有成功。縮進的變化發生在willRotateToInterfaceOrientationdidRotateToInterfaceOrientation之間或在viewWillTransitionToSize之後。我甚至更新到iOS 8.1,結果相同。

有人經歷過類似的行爲嗎?

PS: 我還注意到,當在iOS 8上將佈局邊距設置爲零時,動畫不像使用默認值(使用縮進)那樣平滑。在iOS 7上,動畫始終保持平滑。

編輯:

我找到了一些東西下來。如果將UITableViewController嵌入到UINavigationController中,則旋轉時會發生縮進。如果你進一步旋轉它會回到它設置的縮進(在我的情況下沒有縮進)。

如果將UITableViewController嵌入到容器中(並且此容器位於導航控制器中),而旋轉後單元格將其默認縮進返回。如果進一步旋轉,此行爲保持不變(始終縮進)。

是否有一些事件未發送給子視圖控制器,或者您沒有使用嵌入到UINavigationController中的UITableViewController

回答

0

在我看來,它是一個iOS 8錯誤或Xamarin錯誤。也許另一個人可以驗證它是否與他的安裝相同。我在Xcode 6.1中使用Xamarin Studio 5.5.2。

一個醜陋的解決方案是這樣的:

public override void DidRotate (UIInterfaceOrientation fromInterfaceOrientation) 
{ 
    base.DidRotate (fromInterfaceOrientation); 

    // otherwise cells are indented! iOS 8 Bug? 
    TableView.ReloadData(); 
} 

人們可以在didRotateFromInterfaceOrientation使用reloadDatareloadSection,儘管這是一個過時的功能。但沒有viewDidTransitionToSize我也有支持的iOS 7

編輯:

另一種解決方案我想出了是繪製一個自定義的分隔線。這隻適用於iOS 8,並會回答這個問題(儘管我在iOS 7上遇到了另一個問題,但這種方法並沒有幫助)。