Доступный переключатель класса Swift в зависимости от версии iOS для UICollectionViewCell и UICollectionViewListCell
Для iOS13 мой класс ячеек — UICollectionViewCell, а в iOS14 я хочу, чтобы тот же класс был UICollectionViewListCell, который доступен только в iOS14 для макета списка, который я использую в iOS14.
Есть ли способ достичь этого?
Примечание: это простой случай, но у меня много ячеек, поэтому иметь 2 разных класса для каждой iOS не вариант.
@available(iOS 13, *)
class MyCell: UICollectionViewCell {
}
@available(iOS 14, *)
class MyCell: UICollectionViewListCell {
}
1 ответ
То, что вы хотите сделать, это условно скомпилировать одно или другое, поэтому вам нужно что-то, что имеет эту форму:
#if os(iOS)
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 140000
@available(iOS 14, *)
class MyCell: UICollectionViewListCell { }
#else
@available(iOS 13, *)
class MyCell: UICollectionViewCell { }
#endif
#else
// Maybe cases here for macOS, tvOS, watchOS
#endif