Tôi có một cái gì đó tương tự như thế này:
Như bạn có thể thấy, tôi có chế độ xem bảng và trong mỗi ô xem bảng, tôi có chế độ xem bộ sưu tập. Chế độ xem bộ sưu tập nằm ngang (để sao chép băng chuyền) để người dùng có thể vuốt qua bộ sưu tập hình ảnh và video. Đây là một cách khác để hình dung nó:
Bộ điều khiển -> Chế độ xem bảng -> Các ô xem bảng -> Chế độ xem bộ sưu tập (băng chuyền) -> Các ô xem chế độ bộ sưu tập (các hình ảnh / video băng chuyền)
Những gì tôi đang cố gắng đạt được là để video trong băng chuyền tự động phát khi người dùng cuộn qua chế độ xem bảng. Tất nhiên, để điều đó xảy ra, những điều sau đây cần phải được thực hiện:
- Kiểm tra xem chế độ xem bộ sưu tập có hiển thị trên màn hình không.
- Kiểm tra xem ô xem bộ sưu tập có thể nhìn thấy có phải là video không (không phải tất cả các ô trong chế độ xem bộ sưu tập đều là video, một số là hình ảnh).
- Đảm bảo rằng hai video trong hai ô xem bảng riêng biệt không phát cùng lúc. Chỉ có ô xem bảng hiển thị đầu tiên mới có video phát.
Điều này, tuy nhiên, nói dễ hơn làm. Trước đây tôi đã hỏi làm thế nào để xác định xem một màn hình có hiển thị trên màn hình hay không, vì vậy tôi biết làm thế nào để làm điều đó bây giờ.
Câu hỏi của tôi xoay quanh cách tôi nên cấu trúc mã của mình.
Trong lớp trình điều khiển của tôi, tôi có các mục sau:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
isCollectionViewVisible()
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if (!decelerate) {
isCollectionViewVisible()
}
}
func isCollectionViewVisible() {
for visibleCell in self.tableView.visibleCells {
guard let cell = visibleCell as? MyTableViewCell else {
continue
}
if let myCollectionView = cell.collectionView {
let visibleRect = self.tableView.bounds
let myCollectionViewRect = myCollectionView.convert(myCollectionView.bounds, to: tableView)
if visibleRect.contains(myCollectionViewRect) {
// Collection view is visible
} else {
// Collection view is hidden, either partially or fully
}
}
}
}
Vì vậy, bây giờ, khi người dùng cuộn, nó sẽ kiểm tra xem chế độ xem bộ sưu tập của ô xem bảng có hiển thị đầy đủ hay không . Làm thế nào tôi nên tiến hành từ đây? Làm cách nào để tôi biết chế độ xem bộ sưu tập đầu tiên với video hiển thị để phát video (giả sử rằng tôi đã thực hiện mã video)?
Thứ hai, cách tốt nhất để đóng gói mã này là gì (bao gồm cả isCollectionViewVisible()
chức năng trên để tôi không phải lặp lại mã trong tất cả các bộ điều khiển của mình?
Cám ơn rất nhiều!