2015-10-14 81 views
20

使用UICollectionView時,似乎Apple在RTL語言中自動翻轉界面的新功能會導致問題。有關使用RTL語言支持的項目的UICollectionView iOS 9問題

我對集合視圖使用了Trailing/Leading類型的約束條件,並且他們在RTL語言中切換了它們的值。

的問題是,實際給出的數據是最後indexPath在收集的數據源,但第一個單元格的UIScrollView.contentOffset.x的是0

一個正確的行爲將一直執行下列操作之一:

  1. 正確地顯示所述第一和indexPath切換滾動的方向(向右) - 最佳選項
  2. 不翻轉UI /約束所以所呈現的數據/ indexPath/scrollView.contentOffset.x將被同步 - 禁用RTL支持的選項。
  3. 呈現最後一個indexPath的單元格和數據,但修復了scrollView.contentOffset.x以表示最後一個單元格的位置。

我猜蘋果可能會在未來的某個時候修復它,但同時我們將不得不使用像倒序數組和/或滾動到最後一個對象的解決方法。

+1

您能否在[bugreport.apple.com](http://bugreport.apple.com/)上提交錯誤報告? – wakachamo

+0

@wakachamo會做!感謝您的直接鏈接... – MatanGold

+3

如果您確實實施瞭解決方法,請滾動視圖而不是顛倒數組 - 錯誤處於初始位置,而不是佈局本身。 – lensovet

回答

-1

我處於類似的情況,並找到了解決方案。如果您使用的是swift,請將以下代碼片段添加到您的項目中,並確保bounds.origin始終遵循集合視圖的前端。

extension UICollectionViewFlowLayout { 

    open override var flipsHorizontallyInOppositeLayoutDirection: Bool { 
     return true 
    } 
} 

如果您正在使用的Objective-C,只要繼承了UICollectionViewLayout類,並覆蓋flipsHorizo​​ntallyInOppositeLayoutDirection,並返回true。將此子類用作集合視圖的佈局對象。

+0

當你對一個答案進行投票表決時,請給出一個答案,然後添加一個評論?這樣,每個人都可以知道爲什麼這是一種糟糕的做法。 – Suran

0

沒有爲爲我的作品,請按照以下步驟來解決這一問題是問題的一個通用的解決方案,

  • 給自動佈局約束按您的要求,然後從屬性檢查器中更改語義控制屬性從收集視圖中強制從故事板的從右到左。

enter image description here

  • 然後打開故事板的源代碼,並找到適合您的相關集合視圖的「龍頭」的屬性,並替換成「左」和同爲與「後」替換正確的」。現在你差不多完成了。

enter image description here

enter image description here

enter image description here

  • 現在,會給你造成按您的要求。