• Swift控件UICollectionView使用学习总结


    UICollectionView —— Swift

    对 Swift开发UICollectionView的用法总结

     

    import UIKit
    
    class ThirdViewController: UIViewController,
    UICollectionViewDelegate,
    UICollectionViewDataSource,
    UICollectionViewDelegateFlowLayout {
        
        let item_identifier: String = "ThirdVCCollCell"
        let headerView_identifier: String = "ThirdVCCollHeaderView"
        
        let vcClassArr = ["UIScrollViewStudyVc","UITextFieldStudyVc","UILabelStudyVc"]
    
        var infoCollectionView:UICollectionView? = nil
        
        override func viewDidLoad() {
            super.viewDidLoad()
            print("vcClassArr:(vcClassArr)")
            view.addSubview(self.initInfoCollectionView())
            // Do any additional setup after loading the view.
        }
    
        func initInfoCollectionView() -> UICollectionView {
            
            let layout = UICollectionViewFlowLayout()
            layout.itemSize = CGSize(80,height: 60)                         //设置item尺寸
            layout.minimumLineSpacing = (UIScreen.main.bounds.width - 240) * 0.2  //上下间隔
            layout.minimumInteritemSpacing = (UIScreen.main.bounds.width - 240) * 0.1 //左右间隔
            layout.headerReferenceSize = CGSize(10,height:  30)                 //头部间隔
            layout.footerReferenceSize = CGSize(0,height:  0)               //底部间隔
            layout.sectionInset = UIEdgeInsetsMake(10, 10, 10, 10)                //section四周的缩进
            layout.scrollDirection = UICollectionViewScrollDirection.vertical     //滚动方向
        
            self.infoCollectionView  = UICollectionView.init(frame: view.bounds, collectionViewLayout: layout)
            self.infoCollectionView?.delegate = self
            self.infoCollectionView?.dataSource = self
            self.infoCollectionView?.backgroundColor = UIColor.white
            //注册cell(使用xib自定义的collectionViewCell)
            self.infoCollectionView?.register(UINib.init(nibName: "ThirdVCCollCell", bundle: nil), forCellWithReuseIdentifier: item_identifier)
            //注册headerView
            self.infoCollectionView?.register(ThirdVCCollHeaderView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: headerView_identifier)
            return self.infoCollectionView!
        }
        
        func numberOfSections(in collectionView: UICollectionView) -> Int {
            return 6
        }
        
        func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            return 11
        }
        
        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            
            let itemCell: ThirdVCCollCell = collectionView.dequeueReusableCell(withReuseIdentifier: item_identifier, for: indexPath) as! ThirdVCCollCell
            itemCell.backgroundColor = UIColor.red;
            itemCell.setTitleLabelText(titleText:"第(indexPath.section + 1)组")
            itemCell.setSubTitleLabelText(titleText:"第(indexPath.item + 1)个Item")
            return itemCell;
        }
    
        func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
            print("当前点击第(indexPath.section + 1)组,第(indexPath.item + 1)个Item")
            if indexPath.section == 0{
                if indexPath.row < 3{
                    let vcClassName = self.vcClassArr[indexPath.section]
                    //字符串转 class
                    let vcClass = NSClassFromString("swift_study1." + vcClassName) as! NSObject.Type;//"包名.类名"
                    let vc:UIViewController = vcClass.init() as! UIViewController;
                    vc.hidesBottomBarWhenPushed = true
                    self.navigationController?.pushViewController(vc, animated: true)
                }
            }
        }
        
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
            
            return CGSize.init( self.view.frame.size.width, height: 30.0)
        }
        
        func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
            
            if kind == UICollectionElementKindSectionHeader{
                
                let headerView:ThirdVCCollHeaderView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: headerView_identifier, for: indexPath) as! ThirdVCCollHeaderView
                headerView.setTitleLabelText(title: "第(indexPath.section)组")
                return headerView
                
            }else if kind == UICollectionElementKindSectionFooter{
                
                
            }
            
            return UICollectionReusableView()
        }
        
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    }
    

     

     xib自定义collectionViewCell的方法:

     其中自定义的collectionViewCell的.xib文件的布局约束和object-c的方式相同如下图

    自定义collectionViewCell的.swift文件的代码:

    import UIKit
    
    class ThirdVCCollCell: UICollectionViewCell {
    
        @IBOutlet weak var title_label: UILabel!
        @IBOutlet weak var subTitle_label: UILabel!
        
        override func awakeFromNib() {
            super.awakeFromNib()
            // Initialization code
        }
        
        func setTitleLabelText(titleText:String){
            if !titleText.isEmpty{
                self.title_label.text = titleText
            }
        }
        
        func setSubTitleLabelText(titleText:String){
            if !titleText.isEmpty{
                self.subTitle_label.text = titleText
            }
        }
    }
    

     效果如下图:

  • 相关阅读:
    第二次结对编程作业——毕设导师智能匹配
    第二次作业——结对项目之需求分析与原型设计(1.0)
    调研《构建之法》指导下的全国高校的历届软工实践作品、全国互联网+竞赛、物联网竞赛等各类全国性大学生信息化相关的竞赛平台的历届作品
    软件工程的实践项目课程的自我目标
    CMake
    软件工程实践总结
    软件产品案例分析(K米 APP)
    毕设导师智能匹配
    结对项目之需求分析与原型设计(导师选择)
    调研《构建之法》指导下的软工实践作品
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/9310105.html
Copyright © 2020-2023  润新知