Swift中用CollectionView做广告栏滑动效果

创建一个类:PlayCollectionViewController.swift

//cell重用标识
private let reuseIdentifier = "reuseIdentifier"
class PlayCollectionViewController: UICollectionViewController {

    //页面个数
    private let pageCount = 6
    //布局对象(自定义布局)
    private var layout: UICollectionViewFlowLayout = PlayLayout()

    init() {
        super.init(collectionViewLayout: layout)
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        //注册cell
        collectionView?.registerClass(NewfearureCell.self, forCellWithReuseIdentifier: reuseIdentifier)
    }

    //MARK: - UICollectionDataSource
    override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return pageCount
    }

    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! NewfearureCell
        cell.imageIndex = indexPath.item
        return cell
    }
}

自定义CollectionView的cell

//MARK: - 在这里我们依然在(PlayCollectionViewController.swift的文件中)自定义collectionViewCell
class NewfearureCell: UICollectionViewCell {

    //保存图片索引
    private var imageIndex:Int? {
        didSet {
            //根据页码创建图片名字(需要每张图片的名称只有最有最有一个数不同)
            iconView.image = UIImage(named: "image_\(imageIndex!)")
        }
    }

    override init(frame: CGRect) {
        super.init(frame: frame)

        //初始化UI
        setupUI()
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private func setupUI() {

        //添加子控件到contentView
        contentView.addSubview(iconView)
        //布局子控件位置(填充屏幕)
        iconView.xmg_Fill(contentView)
    }

    //MARK: 懒加载
    private lazy var iconView = UIImageView()
}

继承UICollectionViewFlowLayout,自定义布局

private class PlayLayout: UICollectionViewFlowLayout {

    //重写系统准备布局的方法
    override func prepareLayout() {

        //设置layout布局
        itemSize = UIScreen.mainScreen().bounds.size
        minimumInteritemSpacing = 0
        minimumLineSpacing = 0
        scrollDirection = UICollectionViewScrollDirection.Horizontal

        //设置其他属性
        collectionView?.showsHorizontalScrollIndicator = false
        collectionView?.bounces = false
        collectionView?.pagingEnabled = true
    }
}

你可能感兴趣的:(ios,Collection,swift,广告栏,ViewFlowLa)