import UIKit var itemWh:CGFloat = 0,itemHt:CGFloat = 75; class ViewController:UIViewController,UICollectionViewDelegate,UICollectionViewDataSource{ var data:[String] = [String](); let cellName:String = "MyCell"; var myCollection : UICollectionView! var screenWh:CGFloat = 0; override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.white // screenWh = self.view.frame.width; //每行3个 itemWh = screenWh/3 data = [ "a","b","c","d","e","f","g" ]; // let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width:itemWh,height:itemHt) //列间距,行间距,偏移 layout.minimumInteritemSpacing = 0 layout.minimumLineSpacing = 0 layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0) myCollection = UICollectionView.init(frame: self.view.frame, collectionViewLayout: layout) myCollection.register(MyCell.self, forCellWithReuseIdentifier: cellName) myCollection.backgroundColor = UIColor.white myCollection.delegate = self myCollection.dataSource = self self.view.addSubview(myCollection) //添加拖动手势 let gesture = UILongPressGestureRecognizer(target: self, action: #selector(viewCustom(_ :))) myCollection.addGestureRecognizer(gesture) } func viewCustom(_ longPress:UILongPressGestureRecognizer){ let point:CGPoint = longPress.location(in: longPress.view) let indexPath = self.myCollection?.indexPathForItem(at: point) if(longPress.state == .began && indexPath == nil){return;} switch longPress.state { case .began: self.myCollection?.beginInteractiveMovementForItem(at: indexPath!) break case .changed: self.myCollection?.updateInteractiveMovementTargetPosition(point) break case .ended: self.myCollection?.endInteractiveMovement() break default: self.myCollection?.cancelInteractiveMovement() break } } func numberOfSections(in collectionView: UICollectionView) -> Int { return 1; } func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return data.count } //item 可以移动 func collectionView(_ collectionView: UICollectionView, canMoveItemAt indexPath: IndexPath) -> Bool { return true; } //item 拖动结束时触发 func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { let sourceIndex = data[sourceIndexPath.row]; data.remove(at: sourceIndexPath.row) data.insert(sourceIndex, at: destinationIndexPath.row) //myCollection.reloadData() print(data) } //点击执行删除 func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { data.remove(at: indexPath.row) myCollection.deleteItems(at: [indexPath]) print(data) } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cells = myCollection.dequeueReusableCell(withReuseIdentifier: cellName, for: indexPath) as! MyCell cells.logo.image = #imageLiteral(resourceName: "a0") cells.title.text = data[indexPath.row] return cells } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } class MyCell:UICollectionViewCell{ var logo:UIImageView! var title:UILabel! override init(frame: CGRect) { super.init(frame: frame); let imgWidth:CGFloat = 50; logo = UIImageView(frame: CGRect(x: (itemWh-imgWidth)/2, y: 5, width: imgWidth, height: imgWidth)); logo.clipsToBounds = true logo.layer.cornerRadius = 2; logo.contentMode = .scaleAspectFill; title = UILabel(frame: CGRect(x: (itemWh-imgWidth)/2, y: 5+imgWidth, width: imgWidth, height: 18)); title.textAlignment = .center title.font = UIFont.systemFont(ofSize: 16) title.textColor = UIColor.init(white: 0.3, alpha: 1) self.addSubview(logo) self.addSubview(title) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } }
相关推荐
`swift-BAGridView支付宝首页九宫格布局封装`项目就是针对这一需求,提供了一种仿支付宝首页的九宫格布局解决方案,它使用Swift语言实现,适用于快速构建具有自定义样式的网格视图。这种布局方式在许多应用中都非常...
这个强大的控件允许我们创建复杂的、可自定义的网格布局,适用于展示各种类型的数据。在这个“swift-Cell嵌套UICollectionView自动布局获取高度示例”中,我们将深入探讨如何在UITableViewCell中嵌套一个...
在Swift开发中,UICollectionView是一个强大的UI组件,用于展示可滚动的、网格布局的数据集合。它允许用户自定义单元格(UICollectionViewCell)以呈现各种类型的内容,并且提供了丰富的交互功能,如拖动和移动...
CardsAnimationDemo - swift, 《使用 UICollectionView 实现的一个卡片动画》不是直接操作所有 UIView 和 CALayer 的 transform3D 属性来实现整个效果的,而是使用 UICollectionView 来完成所有的视图管理和实现。
首先,UICollectionView是苹果iOS SDK中的一个强大的组件,它允许我们创建可自定义布局的、动态内容的视图。在图片轮播器的应用场景中,UICollectionView可以轻松地展示一系列图片,并实现平滑的滚动效果。 一、...
Swift-ZJFlexibleLayout 是一个基于UICollectionView的开源项目,专门用于实现自定义的瀑布流布局。在iOS应用开发中,瀑布流布局(又称流式布局)是一种常见且流行的设计模式,常用于图片展示、商品列表等场景,因为...
UICollectionView是一种布局灵活、可自定义的视图,用于展示多组数据项,通常用于创建网格或流式布局。在这个案例中,我们将用它来展示轮播图片。 步骤1:创建UICollectionView 在Xcode中新建一个Swift项目,然后在...
在Swift编程中,九宫格布局是一种常见的UI设计模式,尤其在移动应用中,它能够高效地展示多项内容,如应用的功能图标或者商品列表。本文将深入探讨如何使用Swift实现一个简单的九宫格算法,以及如何在实际项目中应用...
WHC_Model iOS平台高效转换引擎json->model,model->json,model->Dictionary,支持模型类继承其他模型类,支持指定路径转换,不区分json的key和模型属性名称大小写,自动处理json中null。
UICollectionView是苹果提供的一个强大的控件,它允许开发者创建自定义布局的网格视图,可以展示多行多列的数据。它与UITableView类似,但提供了更多的灵活性,可以用于构建复杂的视图,如轮播图。 在创建无限滚动...
首先,`UICollectionView`是Apple为iOS提供的一个强大的视图类,它允许开发者创建自定义布局的网格视图,如瀑布流、棋盘格等。在Swift中,UICollectionView的使用通常涉及以下几个关键部分: 1. **...
在Swift编程语言中,模仿支付宝九宫格解锁功能是一项常见的用户界面设计任务,它涉及到自定义视图、手势识别和动画效果。以下是对这个主题的详细解析: 首先,我们需要创建一个自定义视图,名为`WDDeblockView`,这...
`GridStack`提供了一个高度可定制的网格布局解决方案,允许我们在应用中灵活地组织和显示内容。 `GridStack`的关键特性包括: 1. **动态列数**:你可以根据屏幕尺寸或特定条件设置网格的列数,使其在不同设备上...
UICollectionView更适合创建网格布局,因为它支持更复杂的布局策略。构建过程如下: 1. **创建CollectionViewCell**: 创建UICollectionViewCell子类,设置内部视图的布局以适应网格需求。 2. **自定义FlowLayout**:...
Swift-Greedo-Layout 是一个专为 iOS 设计的响应式网格布局库,由著名摄影社区 500px 开发并开源。这个布局库旨在解决在固定单元格高度时,如何自适应地调整单元格内容(如图片)的宽度,以确保每一行的内容都能在...
如同`UICollectionView`,它可以实现多种布局效果,例如流式布局、网格布局、瀑布流布局等。开发者可以通过自定义布局类来实现特定的布局策略,这在处理少量元素时特别有用,因为它可以避免`UICollectionView`的一些...
Yahoo为了帮助开发者更方便地进行这种迁移,开源了一个在线工具——"swift-Yahoo开源的在线obj-c->swift工具"。这个工具允许开发者直接将Objective-C代码粘贴到网页中,然后自动生成对应的Swift代码。这大大简化了...
在Swift编程中,UICollectionView是一种非常强大的视图组件,它允许我们以网格布局展示多个可交互的元素。对于iOS开发者来说,尤其是初学者,理解如何自定义UICollectionViewCell是至关重要的技能。Xcode 6引入了...
在Swift编程中,UICollectionView和UITableView是两种非常重要的UI组件,用于展示列表或网格视图的数据。这些视图的实现往往涉及到复杂的数据源管理,而DataSourceKit是一个致力于简化这个过程的开源库,它提供了...
在iOS开发中,实现一个可自定义每行方块数的九宫格布局是一项常见的需求。这通常涉及到自定义UICollectionViewFlowLayout来实现灵活的布局效果。本文将深入探讨如何利用Swift和UIKit来创建这样一个九宫格布局,并...