簡體   English   中英

僅在iOS 8上旋轉后,UITableViewCell的縮進更改

[英]Indentation of UITableViewCell changes after rotation only on iOS 8

我有一個包含三個動態行的UITableView 第一次顯示UITableViewController時,一切正常。 旋轉后,盡管將setLayoutMargins設置為零,但其中包含數據的行setLayoutMargins縮進。 到目前為止,我無法在另一個項目中重現此問題。 它僅出現在iOS 8中,但僅出現在一張桌子上。 該表的相同來源正在測試項目中正常工作。 唯一的區別是它位於具有其他視圖的容器中。

我檢查了自動布局約束,旋轉方法,注釋掉的東西-所有這些都沒有成功。 縮進的更改發生在willRotateToInterfaceOrientationdidRotateToInterfaceOrientation之間,或者在viewWillTransitionToSize之后。 我什至更新到iOS 8.1,結果相同。

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

PS:我還注意到,在iOS 8上將布局邊距設置為零時,動畫不像默認值(帶有縮進)那樣平滑。 在iOS 7上,動畫始終很流暢。

編輯:

我追蹤了一些東西。 如果將UITableViewController嵌入到UINavigationController則縮進發生在旋轉時。 如果進一步旋轉,則返回到其設置的縮進(在我的情況下為無縮進)。

如果將UITableViewController嵌入到容器中(並且此容器在導航控制器中),則在旋轉單元格之后,將獲得其默認縮進。 如果進一步旋轉,此行為將保持不變(始終縮進)。

是否有些事件沒有發送到子視圖控制器,或者您沒有使用嵌入到UINavigationControllerUITableViewController

我認為這是iOS 8錯誤或Xamarin錯誤。 也許其他人可以驗證其安裝是否相同。 我正在將Xamarin Studio 5.5.2與Xcode 6.1一起使用。

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

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上遇到了另一個問題,這種方法無濟於事)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM