首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionViewLayout方法永远不会被调用

UICollectionViewLayout方法永远不会被调用
EN

Stack Overflow用户
提问于 2016-11-17 03:03:47
回答 2查看 3.7K关注 0票数 3

我正在使用一个UICollectionView我正在尝试使用UICollectionViewLayout方法来调整单元格的大小,但是它们永远不会被调用。这些方法包括:sizeForItemAtIndexPathminimumInterimItemSpacingForSectionAtIndex,以及minimumLineSpacingForSectionAtIndex

这3个方法从来没有被调用过,我不确定从哪里/如何调用它们。下面是我在Swift 3中的代码

代码语言:javascript
复制
import Foundation
import UIKit

class CollectionVC: UICollectionViewController {

    var Sections = [SectionService]()

    override func viewDidLoad() {
        createServiceSections()
    }

    func createServiceSections(){

        ServiceSections.append(ServiceSection(headerTitle: "1", items: 2, headerImage: UIImage(named: "Default"), stats: nil))
        ServiceSections.append(ServiceSection(headerTitle: "2", items: 3, headerImage: UIImage(named: "Default"), stats: nil))
        ServiceSections.append(ServiceSection(headerTitle: "3", items: 3, headerImage: UIImage(named: "Default"), stats: nil))
        ServiceSections.append(ServiceSection(headerTitle: "4", items: 5, headerImage: UIImage(named: "Default"), stats: nil))
    }

    override func numberOfSections(in collectionView: UICollectionView) -> Int {
        return ServiceSections.count
    }


    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return ServiceSections[indexPath.section].items.count
    }

    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell1 = collectionView.dequeueReusableCell(withReuseIdentifier: "servicecell", for: indexPath) as! ServicesCellView

        cell1.serviceLabel.text = "test"
        cell1.serviceImage.image = ServiceSections[indexPath.section].headerImage
        return cell1
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

        print("size for item at indexPath")
        var cellSize: CGSize
        let collectionViewWidth = self.collectionView!.bounds.size.width
        cellSize = CGSize(width: (collectionViewWidth * 0.48), height: (collectionViewWidth * 0.48))
        return cellSize
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInterItemSpacingForSectionAtIndex section: Int) -> CGFloat {
        print("min spacing section")
        return 1
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
        print("min line spacing section")
        return 1
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-17 03:51:59

在Xinatanil的帮助下,我能够解决这个问题。首先,我必须把我的类线改成这样

代码语言:javascript
复制
class CollectionVC: UICollectionViewController, UICollectionViewDelegateFlowLayout {

然后我不得不将方法声明更改为Swift 3语法...

代码语言:javascript
复制
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    var cellSize: CGSize
    let collectionViewWidth = self.collectionView!.bounds.size.width
    cellSize = CGSize(width: (collectionViewWidth * 0.48), height: (collectionViewWidth * 0.48))
    return cellSize
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 1
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 1
}
票数 4
EN

Stack Overflow用户

发布于 2016-11-17 03:11:51

我认为,您还没有设置collectionView委托

请尝试:

self.collectionView.delegate = selfviewDidLoad()方法

实际上UICollectionViewDelegateFlowLayout继承自UICollectionViewDelegate。所以设置委托就足够了。

编码快乐!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40640260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档