![](/img/trans.png)
[英]UITableViewCell actions in iOS 11 after device rotation are broken
[英]Indentation of UITableViewCell changes after rotation only on iOS 8
我有一個包含三個動態行的UITableView
。 第一次顯示UITableViewController
時,一切正常。 旋轉后,盡管將setLayoutMargins
設置為零,但其中包含數據的行setLayoutMargins
縮進。 到目前為止,我無法在另一個項目中重現此問題。 它僅出現在iOS 8中,但僅出現在一張桌子上。 該表的相同來源正在測試項目中正常工作。 唯一的區別是它位於具有其他視圖的容器中。
我檢查了自動布局約束,旋轉方法,注釋掉的東西-所有這些都沒有成功。 縮進的更改發生在willRotateToInterfaceOrientation
和didRotateToInterfaceOrientation
之間,或者在viewWillTransitionToSize
之后。 我什至更新到iOS 8.1,結果相同。
有人經歷過類似的行為嗎?
PS:我還注意到,在iOS 8上將布局邊距設置為零時,動畫不像默認值(帶有縮進)那樣平滑。 在iOS 7上,動畫始終很流暢。
編輯:
我追蹤了一些東西。 如果將UITableViewController
嵌入到UINavigationController
則縮進發生在旋轉時。 如果進一步旋轉,則返回到其設置的縮進(在我的情況下為無縮進)。
如果將UITableViewController
嵌入到容器中(並且此容器在導航控制器中),則在旋轉單元格之后,將獲得其默認縮進。 如果進一步旋轉,此行為將保持不變(始終縮進)。
是否有些事件沒有發送到子視圖控制器,或者您沒有使用嵌入到UINavigationController
的UITableViewController
?
我認為這是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
使用reloadData
或reloadSection
。 但是沒有viewDidTransitionToSize
,我還必須支持iOS 7。
編輯:
我想出的另一種解決方案是繪制一條自定義分隔線。 這僅適用於iOS 8,並且可以回答問題(盡管我在iOS 7上遇到了另一個問題,這種方法無濟於事)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.