2015-10-14 32 views
20

Có vẻ như tính năng mới của giao diện lật tự động của Apple trên ngôn ngữ RTL gây ra sự cố khi sử dụng UICollectionView.Sự cố UICollectionView iOS 9 trên dự án có hỗ trợ ngôn ngữ RTL

Tôi đã sử dụng các ràng buộc của loại Trailing/Leading cho chế độ xem bộ sưu tập và chúng đã chuyển giá trị của chúng theo ngôn ngữ RTL.

Vấn đề là các dữ liệu thực tế được trình bày là của cuối cùngindexPath trong nguồn dữ liệu của bộ sưu tập nhưng UIScrollView.contentOffset.x của ô đầu tiên là 0.

Một hành vi thích hợp sẽ là một trong những cách sau:

  1. Hiển thị indexPath đầu tiên một cách chính xác và chuyển hướng của cuộn (bên phải) - Lựa chọn tốt nhất
  2. Không lật UI/hạn chế nên được trình bày dữ liệu/indexPath/scrollView.contentOffset.x sẽ được đồng bộ hóa - Tùy chọn tắt hỗ trợ RTL.
  3. Trình bày ô và dữ liệu của chỉ mục cuối cùng nhưng sửa lỗi scrollView.contentOffset.x để đại diện cho vị trí ô cuối cùng.

Tôi đoán Apple có thể sửa chữa đôi khi trong tương lai nhưng trong khi đó chúng tôi sẽ phải sử dụng cách giải quyết như đảo ngược mảng và/hoặc cuộn đến đối tượng cuối cùng.

+1

Bạn có thể vui lòng gửi báo cáo lỗi tại [bugreport.apple.com] (http://bugreport.apple.com/) không? – wakachamo

+0

@wakachamo Sẽ làm! Cảm ơn bạn đã liên kết trực tiếp ... – MatanGold

+3

Nếu bạn thực hiện giải pháp thay thế, hãy cuộn chế độ xem thay vì đảo ngược mảng - lỗi ở vị trí ban đầu, chứ không phải bố cục. – lensovet

Trả lời

-1

Tôi đã ở trong tình huống tương tự và đã tìm ra giải pháp cho việc này. Nếu bạn đang sử dụng nhanh, hãy thêm đoạn mã sau vào dự án của bạn và nó sẽ đảm bảo rằng bounds.origin luôn theo sau cạnh đầu của chế độ xem bộ sưu tập.

extension UICollectionViewFlowLayout { 

    open override var flipsHorizontallyInOppositeLayoutDirection: Bool { 
     return true 
    } 
} 

Nếu bạn đang sử dụng Objective-C, chỉ cần phân lớp lớp UICollectionViewLayout, và ghi đè flipsHorizontallyInOppositeLayoutDirection, và trở thành sự thật. Sử dụng lớp con này làm đối tượng bố cục của chế độ xem bộ sưu tập của bạn.

+0

Khi bạn đang bỏ phiếu xuống một câu trả lời, vui lòng cho biết lịch sự của việc thêm nhận xét về lý do tại sao? Bằng cách đó mọi người đều có thể tìm hiểu tại sao đây là một cách tiếp cận tồi tệ. – Suran

0

Có một giải pháp chung cho vấn đề đó mà làm việc cho tôi, hãy làm theo các bước dưới đây để khắc phục vấn đề đó,

  • Cho hạn chế bố trí tự động theo yêu cầu của bạn và sau đó từ thanh tra thuộc tính thay đổi thuộc tính kiểm soát ngữ nghĩa của chế độ xem bộ sưu tập để Buộc từ phải sang trái từ bảng phân cảnh.

enter image description here

  • storyboard Sau đó mở dưới dạng mã nguồn và tìm cho “hàng đầu” thuộc tính của xem bộ sưu tập có liên quan của bạn và thay thế mà với “trái” và tương tự cho các “đuôi” thay thế mà với bên phải". Bây giờ bạn đã gần xong rồi.

enter image description here

enter image description here

enter image description here

  • bây giờ mà sẽ cung cấp cho bạn kết quả theo yêu cầu của bạn.
Các vấn đề liên quan