小码哥-玩转【斗鱼直播APP】系列之游戏推荐展示

游戏推荐展示

展示效果

  • 展示效果

思路分析

  • 其实这个实现比较简单,也是有两种方案
    • UIScrollView:直接在上面放上UIButton即可
    • UICollectionView:每一个游戏用一个Cell来展示
  • 方案选择
    • 方案二:UICollectionView来实现
    • 一方面可以循环利用,另一方面UICollectionView真的非常好用喔

界面搭建

  • 自定义RecommendGameView
    • 由于内容比较固定,直接通过xib描述
    • 添加UICollectionView即可
    • 设置UICollectionView的布局,设置数据源以及实现数据源方法(见代码)
    • 切记:设置自定义View的autoresizingMask = .None,否则控件将不能显示
 
 
  1. class RecommendGameView: UIView {
  2. // MARK: 控件属性
  3. @IBOutlet weak var collectionView: UICollectionView!
  4. // MARK: 系统回调
  5. override func awakeFromNib() {
  6. super.awakeFromNib()
  7. autoresizingMask = .None
  8. let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
  9. layout.itemSize = CGSize(width: kGameCellW, height: kGameViewH)
  10. collectionView.contentInset = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 10)
  11. }
  12. }
  13. // MARK:- 提供快速创建的类方法
  14. extension RecommendGameView {
  15. class func recommendGameView() -> RecommendGameView {
  16. return NSBundle.mainBundle().loadNibNamed("RecommendGameView", owner: nil, options: nil).first as! RecommendGameView
  17. }
  18. }
  19. // MARK:- 遵守UICollectionView的数据源&代理
  20. extension RecommendGameView : UICollectionViewDataSource, UICollectionViewDelegate {
  21. func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
  22. return 10
  23. }
  24. func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
  25. let cell = collectionView.dequeueReusableCellWithReuseIdentifier(kGameCellID, forIndexPath: indexPath) as! CollectionGameCell
  26. cell.backgroundColor = indexPath.item % 2 == 0 ? UIColor.redColor() : UIColor.blueColor()
  27. return cell
  28. }
  29. }
  • 将自定义View添加到UICollectionView中

    • 懒加载RecommendGameView对象
    • 将gameView添加到UICollectionView中
    • 设置UICollectionView的内边距
    • 代码如下:
  • 懒加载RecommendCycleView

 
 
  1. private lazy var gameView : RecommendGameView = {
  2. let gameView = RecommendGameView.recommendGameView()
  3. gameView.frame = CGRect(x: 0, y: -kGameViewH, width: kScreenW, height: kGameViewH)
  4. return gameView
  5. }()
  • 添加UIContentView中
 
 
  1. collectionView.addSubview(gameView)
  2. collectionView.contentInset = UIEdgeInsets(top: kCycleViewH + kGameViewH, left: 0, bottom: 0, right: 0)

展示数据

  • 因为该位置展示的数据,其实是请求热门游戏中10组数据,因此直接展示即可
  • 将之前请求到的groups数组,传递给gameView
    • 对数据进行进一步处理
      • 将前两组数组删除(热门、颜值)
      • 在最后添加更多分组(最后有一组更多)
  • 自定义Cell,用于展示数据
    • 通过Xib直接描述
  • 根据模型展示数据
    • 代码如下
 
 
  1. class CollectionGameCell: UICollectionViewCell {
  2. @IBOutlet weak var iconImageView: UIImageView!
  3. @IBOutlet weak var titleLabel: UILabel!
  4. var group : AnchorGroup? {
  5. didSet {
  6. let iconURL = NSURL(string: group?.icon_url ?? "")!
  7. iconImageView.kf_setImageWithURL(iconURL, placeholderImage: UIImage(named: "home_more_btn"))
  8. titleLabel.text = group?.tag_name
  9. }
  10. }
  11. override func awakeFromNib() {
  12. super.awakeFromNib()
  13. iconImageView.layer.cornerRadius = iconImageView.bounds.width * 0.5
  14. iconImageView.layer.masksToBounds = true
  15. }
  16. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值