Swift5.2 Control WaterFlowLayout(瀑布流)

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

Swift 项目底层框架(万能)
在这里插入图片描述

在这里插入图片描述

import UIKit

class ViewController: UIViewController {
    
    var waterFlowLayoutView = WaterflowView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white

        waterFlowLayoutView = WaterflowView(frame: view.bounds)
        waterFlowLayoutView.dataSource = self
        waterFlowLayoutView.wfDelegate = self
        //自动调节子控件的宽度跟父空间的宽度一样
        waterFlowLayoutView.autoresizingMask = .flexibleWidth
        /*
        当调用 view.addSubview(waterFlowLayoutView) 会调动layoutSubview,
        这时候应该决定好view的大小
        */
        view.addSubview(waterFlowLayoutView)
        
    }
        
}

extension ViewController: WaterflowDelegate, WaterflowDataSource {
  
  //cell的总个数
  func numberOfCellsInWaterflow(waterflow: WaterflowView) -> Int {
    return 100
  }
  //cell赋值
  func waterflow(waterflow: WaterflowView, cellAtIndex index: Int) -> WaterflowViewCell {
    var cell = waterflow.dequeueReusableCellWithIdentifier(identifier: "wfCell") as? WaterflowViewCell
    if cell == nil {
      cell = WaterflowViewCell()
      cell?.identifier = "wfCell"
    }
    cell?.backgroundColor = randomColor()
    return cell!
  }
  
  //一行显示的个数
  func numberOfColumnsInWaterflow(waterflow: WaterflowView) -> Int {
    if preferredInterfaceOrientationForPresentation.isPortrait {
      return 3
    } else {
      return 5
    }
  }
  
  // MARK: - wfdelegate
  func waterflow(waterflow: WaterflowView, didSelectAtIndex index: Int) {
    print(index)
  }
  
  //cell的高度
  func waterflow(waterflow: WaterflowView, heightAtIndex index: Int) -> CGFloat {
    return (index % 2 == 0) ? 100 : 50
  }
  
  //cell之间的间距
  func waterflow(waterflow: WaterflowView, marginForType type: WaterflowMarginType) -> CGFloat {
    return 10
  }
  
  override func didRotate(from fromInterfaceOrientation: UIInterfaceOrientation) {
    waterFlowLayoutView.reloadData()
  }
  
  //每个cell的颜色
  func randomColor() -> UIColor {
    let red: CGFloat  = CGFloat(arc4random_uniform(256))/255
    let green: CGFloat = CGFloat(arc4random_uniform(256))/255
    let blue: CGFloat  = CGFloat(arc4random_uniform(256))/255
    let alpha: CGFloat = 1.0
    return UIColor.init(red: red, green: green, blue: blue, alpha: alpha)
  }
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯汉栩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值