Tag: uicollectionviewcell

WBSwiftyMenu

WBSwipeableCell用于在TableViewCell和CollectionViewCell中显示选项菜单。 我们制作了此菜单,以在单个单元格中显示多个选项。 Apple在一个单元格中最多支持3个项目,但是在我们的控制器中,您可以添加3个以上的项目。 我已经从这个控制器中获取了这个想法-> https://github.com/SwipeCellKit/SwipeCellKit 背景 我已经为tableviewcell和collectionviewcell使用了许多菜单,但是它们都有一些局限性。 WBSwipeableCell用于菜单项过多且需要在一个视图中显示的地方。 示范 菜单垂直布局 对于Vertical菜单布局,我们需要实现MenuViewDelegate协议的一种可选委托方法,如下所示 func menuView(_ view:MenuView,menuLayoutForRowAtIndexPath indexPath:IndexPath)-> MenuLayout { 返回.vertical } 菜单方块布局 对于Square菜单布局,我们需要实现MenuViewDelegate协议的一种可选委托方法,如下所示 func menuView(_ view:MenuView,menuLayoutForRowAtIndexPath indexPath:IndexPath)-> MenuLayout { 返回.square } 菜单水平布局 对于水平菜单布局,我们需要实现MenuViewDelegate协议的一种可选委托方法,如下所示 func menuView(_ view:MenuView,menuLayoutForRowAtIndexPath indexPath:IndexPath)-> MenuLayout { 返回水平 } 有关此控制器的详细信息,可以在Github上进行检查:https://github.com/mwaqasbhati/WBSwipeableCell 我希望大家分叉它,并帮助我改进此库。

使用UIPanGestureRecognizer删除UICollectionView Swift 3中的单元格

我想分享一个快速的小项目,该项目使用UIPanGestureRecognizer删除UICollectionView中的单元格。 以下是其外观示例: 假定您具有如何创建UICollectionView和自定义CollectionViewCell的基本知识。 项目文件可以位于这里: GitHub – almusto / PanToDelete 通过在GitHub上创建一个帐户为PanToDelete开发做出贡献。 github.com 当涉及到UI时,该项目非常简单。 我所做的就是创建一个UICollectionViewController,并将其嵌入到导航控制器中的自定义单元格。 设置CollectionView: 让我们快速浏览一下UICollectionView的基本设置 因为我们使用的是UICollectionViewController,所以我们不需要设置委托,因为Xcode会为我们这样做。 但是,我们确实设置了UICollectionViewDelegateFlowLayout以允许我们调整在viewDidLoad()之后的第一个函数中执行的单元格框架。 接下来的三个函数是标准的collectionView函数,我们在其中设置节数,将numberOfItemsInSection设置为grocerList.count,然后创建单元格本身。 您可能想知道功能允许我删除单元格的位置在哪里……不要担心,我稍后再讲。 设置自定义单元: 这是我们大多数代码将要使用的地方。 让我们先来看一下变量和初始化程序。 我在这里创建了一些变量。 cellLabel将存储我们的杂货项目,两个deleteButton标签将根据我们平移的方式添加到左侧或右侧的内容视图下方。 当然还有我们的平移手势识别器。 我们还向类添加了UIGestureRecognizerDelegate协议。 稍后我将解释原因。 接下来,我们有两个init方法,其中调用了我创建的自定义函数comonInit()。 对于所需的init,我仍然有些朦胧,但是据我所知,当我们创建自己的自定义类init时,我们需要使用它。 此必需的init允许我们通过NSCoder“取消存档”数据。 似乎这里发生了很多事情,但这确实很简单。 而不是在情节提要中创建这些对象,而是手动进行,因此我们必须初始化每个对象并将其添加到视图中。 让我们一次浏览一个项目。 首先,我将contentView的背景色设置为灰色,将self.background颜色设置为红色。 每个单元格都有一个contentView,它显示我们想要的单元格中的对象或颜色。 当我设置self.background颜色时,实际上是在contentView下设置颜色。 完成此操作后,我将初始化cellLabel并将其添加到contentView中。 我也将translatesAutoresizingMaskIntoConstraints设置为false,这使我可以手动设置该标签的约束。 如果我不这样做,则自动布局会尝试为我创建约束。 同样,我初始化deleteLables并将它们插入到contentView的下面。 因为我希望这些标签可以用平底锅拍摄,所以我不在这里设置边框。 相反,我在平底锅发生时设置了帧。 最后,我使用一个名为onPan的动作来初始化平移手势。 与创建UIButton时非常相似。 我还将委托设为self..self作为CustomCell类。 现在,我们的视图已初始化,让我们开始平移手势: 制作手势: 首先让我们看一下我们的onPan函数。 您会注意到我们的if语句涵盖了手势的某些不同状态。 如果状态为“开始”,则不执行任何操作;如果状态为“已更改”,则调用setNeedsLayout()。 该方法说“在下一个运行循环上调用layoutSubViews()。”当某人按下我们的单元格时,状态变为开始,然后当他们向左或向右移动该单元格时,状态变为更改并调用layoutSubViews()。 现在在layoutSubViews()中,我们通过调用translation(in:View)来检查状态是否已更改,以及状态是否改变,以获取平移的当前点,该平移返回“标识坐标系统中视图新位置的点”。然后,我们根据该点设置contentView和deleteLabels的框架。 现在回到我们的onPan函数,我们有一条else语句,它检查平移手势速度以查看其是否大于每秒500点。 在检查速度之前,您会注意到腹肌。 这是绝对值,我们这样做的原因是因为用户可以向左或向右平移,因此该值可能为负。 […]

我怎样才能parsing每个项目到它的uicollection视图单元格

所以下面是我的parsingJSON并将其放入一个集合视图单元格的代码 import UIKit let cellId = "cellId" struct AnimeJsonStuff: Decodable { let data: [AnimeDataArray] } struct AnimeLinks: Codable { var selfStr : String? private enum CodingKeys : String, CodingKey { case selfStr = "self" } } struct AnimeAttributes: Codable { var createdAt : String? var slug : String? let synopsis: String? private enum CodingKeys : […]

即使不使用自定义的XIB,在awakeFromNib中为UICollectionViewCell操作IBsockets?

下面的代码用于操作和configuration子类UICollectionViewCell的IBsockets。 然而,在这个阶段,IB级的商店还没有连接。 其他SO这样的postbuild议使用awakeFromNib来操纵IB网点,但是在所有的答案中,问题都会涉及一个自定义的XIB。 但是,这个子类不使用自定义的XIB。 即使没有使用自定义XIB,使用awakeFromNibconfigurationIBsockets是否仍然正确? override init(frame: CGRect) { super.init(frame: frame) doInit(frame) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) doInit(frame) } private func doInit(frame: CGRect) { }

UIProgressView在UICollectionViewCell中的setFrame时不能正确工作

我在UICollectionViewCell中创build一个UIProgressView,我尝试为UIProgressView设置框架来更改UICollectionViewCell中的位置,但是当这样做时,一些单元格不显示progressView。 当我删除setFrame时,没问题,但在UICollectionViewCell顶部的默认宽度 有什么问题?如何更改UIProgressView的大小,来源? 请帮忙! //Cell:UICollectionViewCell //Cell.m – (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { //ProgressView self.progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleBar]; [self.progressView setFrame:progressViewFrame];//Some cells not display progressView [self.progressView addSubview:self.downloadBar]; } return self; }

如何修复UICollectionViewCell的子类的不兼容的指针

我已经实现了SPCell的子类SPCell ,我正在使用它在我的UICollectionViewController创build单元格。 现在,当我收集一个单元格,为了做一些事情,我得到一个警告Incompatible pointer types initializing 'SPCell *' with an expression of type 'UICollectionViewCell *' 这是一个例子。 我的自定义单元格保存一个图像,我想要更改alpha值。 但是在我分配细胞的那一行,我得到了这个警告。 – (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath;{ SPCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath]; cell.thumbnail.alpha=0.6; } 提前致谢。

横向取消UICollectionViewCells

我有一个问题,用stream布局和方向来pipe理我的UICollectionsView。 基本上,当我切换到横向时发生问题,一些UICollectionViewCells丢失。 一旦我开始滚动,它们就会重新出现。 它应该能够显示所有的单元格,因为contentSize有更多的空间。 我什至试图在我的布局: – (BOOL) shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds { return YES; } 有了同样的结果。 任何人有任何想法在这个问题上? 我包含了一个关于如何组织布局和预期行为的图像: 要添加更多的细节,每个颜色编码单元格属于它自己的部分,我正在移动我的第二部分向右方向变化使用: – (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { NSArray* attributesToReturn = [super layoutAttributesForElementsInRect:rect]; for (UICollectionViewLayoutAttributes* attributes in attributesToReturn) { NSIndexPath* indexPath = attributes.indexPath; if (nil == attributes.representedElementKind) { attributes.frame = [self layoutAttributesForItemAtIndexPath:indexPath].frame; } else { NSString *kind = attributes.representedElementKind; attributes.frame = [self layoutAttributesForSupplementaryViewOfKind:kind […]

Swift中Collection视图的横向方向

我在collections视图单元格中遇到了横向的问题。 当应用程序是纵向的,它给了我每行的单元格的正确数量是2.但是,当我旋转我的应用程序横向显示每行1个单元格。 这里是我得到的屏幕: 肖像: 景观: 这是我的代码添加单元格的大小: func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { var screenSize = CGFloat() if UIDevice.currentDevice().orientation.isLandscape.boolValue { screenSize = UIScreen.mainScreen().bounds.size.width } else { screenSize = UIScreen.mainScreen().bounds.size.width } let cellWidth = screenSize / 2.0 return CGSizeMake(cellWidth, cellWidth) }

如何每秒更新UICollectionViewCell的UILabel(swift)

我有一个UICollectionViewCell与UILabel显示两个date之间的日差。 我想每秒更新一次。 我曾尝试使用NSTimer重新加载UICollectionview的数据,但它使得用户界面非常慢。 我如何去实现这个? 谢谢。

为什么UICollectionView与UICollectionViewFlowLayout不显示单元格,但要求大小?

为什么使用stream布局的collectionview有时不显示单元格,但是代表请求的大小,以及部分项目数和响应者提供正确的信息。 这里的例子,6节的麻烦 2015-04-08 04:43:59.020 ASKED SECTION:0 ITEMS:0 2015-04-08 04:43:59.023 RETUR SECTION:0 ITEMS:1 2015-04-08 04:43:59.023 ASKED SECTION:1 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:1 ITEMS:1 2015-04-08 04:43:59.024 ASKED SECTION:2 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:2 ITEMS:1 2015-04-08 04:43:59.024 ASKED SECTION:3 ITEMS:0 2015-04-08 04:43:59.024 RETUR SECTION:3 ITEMS:1 2015-04-08 04:43:59.025 ASKED SECTION:4 ITEMS:0 2015-04-08 04:43:59.043 RETUR SECTION:4 ITEMS:0 2015-04-08 04:43:59.043 ASKED […]