Поведение UICollectionViewFlowLayout не определено - UICOLLECTION VIEW CHANGES SIZES. XCODE - SWIFT - PullRequest
0 голосов
/ 09 ноября 2019

Я пытаюсь запустить приложение и решаю, использовать раскадровки или программировать все это программно. Я играю с проектами скачать из сети, чтобы решить.

Я использую UICollectionviews для отображения данных. Когда я открываю viewcontroller программно, все работает нормально, и ячейка отображает изображение отлично. Однако, когда я запускаю раскадровку и связываю контроллер представления в раскадровке с моим быстрым кодом файла, изображение представления коллекции меньше, чем весь экран, и как только я обновляю представление, изображение становится слишком большим для всего экрана, и я получаю этоошибка:

2019-11-09 11:14:02.087688+1300 testapp[22869:4508359] the item width must be less than the width of the UICollectionView minus the section insets left and right values, minus the content insets left and right values.
2019-11-09 11:14:02.087788+1300 testapp[22869:4508359] Please check the values returned by the delegate.
2019-11-09 11:14:02.088547+1300 testapp[22869:4508359] The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7f9c65d191e0>, and it is attached to <UICollectionView: 0x7f9c6602ee00; frame = (0 0; 414 808); clipsToBounds = YES; autoresize = W+H; autoresizesSubviews = NO; tintColor = UIExtendedSRGBColorSpace 0.357511 0.488406 0.724745 1; gestureRecognizers = <NSArray: 0x60000376f420>; layer = <CALayer: 0x600003947180>; contentOffset: {0, -60}; contentSize: {414, 565}; adjustedContentInset: {0, 0, 83, 0}; layout: <UICollectionViewFlowLayout: 0x7f9c65d191e0>; dataSource: <Storefront.HomeController: 0x7f9c65c0e180>>.
2019-11-09 11:14:02.092875+1300 testapp[22869:4508359] Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.

Вот код для настройки viewview:

 class HomeController: mycollectionViewController {

   override func viewDidLoad() {
    super.viewDidLoad()
    collectionView?.backgroundColor = .white
    collectionView?.register(imageCell.self, forCellWithReuseIdentifier: imageCell.cellId)
    collectionView?.backgroundView?.alpha = 0
    let refreshControl = UIRefreshControl()
    refreshControl.addTarget(self, action: #selector(handleRefresh), for: .valueChanged)
    collectionView?.refreshControl = refreshControl
    fetchImages()
}

override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return images.count
}

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: imageCell.cellId, for: indexPath) as! imageCell
        if indexPath.item < images.count {
            cell.image = images[indexPath.item]
        }
        cell.delegate = self
        return cell
    }
}



 //MARK: - UICollectionViewDelegateFlowLayout

extension HomeController: UICollectionViewDelegateFlowLayout {

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let dCell = imageCell(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 1000))
    dCell.image = images[indexPath.item]
    dCell.layoutIfNeeded()
    var height: CGFloat = dCell.header.bounds.height
    height += view.frame.width
    height += 24 + 2 * dCell.padding 
    height += dCell.captionLabel.intrinsicContentSize.height + 8
    return CGSize(width: view.frame.width, height: height)
}
}

Viewcontroller, с которым я связал этот код, является Collectionviewcontroller. Приложение не падает, я только получаю сообщение об ошибке, и представление коллекции меняет размеры.

Я ищу здесь решение, но ничего не работает. Я не вижу, что отличается от открытия этого контроллера с раскадровкой или программно?

, пожалуйста, помогите!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...