【发布时间】:2014-10-10 20:26:37
【问题描述】:
我正在与 UICollectionView 争吵以采用它来满足我的需求。
我正在尝试构建一个可折叠的标签云。所有元素都可以根据里面的文字动态改变大小。
显示集合时,我想只显示第一行并隐藏其余内容。 如果内容多于一行,我想在第一行显示一个按钮作为最后一项 - 选择它后,我将更改集合大小以适应它的内容。
第一步:
点击后:
我能够使用这段代码达到预期的效果:
- (void) updateFrame
{
if(self.showFull)
{
self.showMoreButton.hidden = YES;
self.bottomConstrain.constant = 0;
self.frame = CGRectMake(0, 0, self.collectionView.frame.size.width, self.collectionView.contentSize.height);
}
else
{
self.showMoreButton.hidden = NO;
self.bottomConstrain.constant = self.originalConstrainValue;
self.frame = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height);
}
}
但在我的例子中,按钮完全放在集合之外:
我的头撞到了一堵砖墙上,如何让这个按钮成为集合视图的一部分。 这是我第一次使用 UICollectionView 和 UICollectionViewFlowLayout,它太复杂了,我仍然无法理解最好的放置位置。
我的一个想法是在 UICollectionView 上播放一个按钮并将其放置在第一行的末尾 - 但我不知道如何从集合中获取第一行大小。使用这种方法,连续覆盖最后一项也会有问题。
-
我认为最好将此元素作为 UICollectionViewCell 放置,但我不知道如何处理 - 如何预测它的放置位置以及以后如何隐藏它。
李>
任何想法都将受到高度赞赏。 当前模板项目在这里:
【问题讨论】:
-
我还会注意到您正在编辑约束和框架。您应该选择其中一个。
-
这是有原因的——约束依赖于父视图框架——看看我分享的项目。我需要它来将我的收藏视图扩展到完整的视图。
标签: ios objective-c uicollectionview uicollectionviewlayout