Я новичок в Swift и пытаюсь реализовать приложение с режимом «презентация». Я пытаюсь осуществить это с помощью UICollectionView, где ячейка в портретном и альбомном режимах - это полная ширина кадра, в котором она находится, и половина ее высоты. Проблема в том, что когда я запускаю приложение в альбомном или портретном режиме, все работает нормально. Однако, если я начну в портретном режиме, а затем поверну «вправо» в ландшафтный режим, ячейка больше не будет соответствовать ширине кадра.
Что я пробовал до сих пор:
- перемещение моей функции setUpCollectionView () в и из моего viewDidLoad
- настройка моего sizeForItem в функции
- настройка ограничений на автоматическое расположение
Ни один из которых не работал.
класс ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout {
let textArray = ["Some text", "Some other text", "even more stuff", "And more stuff", "And this is more text"]
@IBOutlet weak var collectionView: UICollectionView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
collectionView.dataSource = self
collectionView.delegate = self
setUpCollectionView()
}
// setUpCollectionView ()
func setUpCollectionView() {
if let flowLayOut = collectionView?.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayOut.scrollDirection = .horizontal
flowLayOut.minimumLineSpacing = 0
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return textArray.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! TextCell
cell.textView.text = textArray[indexPath.row]
collectionView.isPagingEnabled = true
return cell
}
// MARK: - Make the cell fill the view size
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: view.frame.width, height: view.frame.height / 2)
}
} * * тысяча двадцать-один
Буду благодарен за любую помощь. То, что я хотел бы, чтобы ячейка была последовательно на всю ширину кадра, будь то пейзаж или портрет.
Снимок экрана в портрете (правильно)
! (https://photos.app.goo.gl/nozLPGF8X7E1aNDE6)
Снимок экрана в альбомной ориентации (не правильно)
! https://photos.app.goo.gl/YCTJdmqVY6eKkpYS8
Снимок экрана в альбомной ориентации (правильно)
https://photos.app.goo.gl/pjWyC1oZeckUuHE66