我正在尝试创建一个效果,我在更改帧大小时更改我的UICollectionView的布局
最初,collectionView布局在整个屏幕上呈现"缩略图"库样式.
在将框架尺寸调整为细条后 - 我想呈现"电影条"风格的布局
两种布局都可以独立工作,并且符合预期.
我尝试过类似的代码:
[UIView animateWithDuration:1
delay:0.0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.collectionview.frame = newFrame; // animate the frame size
}
completion:^(BOOL finished) {
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView setCollectionViewLayout:filmstriplayout animated:YES]; // now set the new layout
}];
Run Code Online (Sandbox Code Playgroud)
但它看起来非常不稳定,没有按预期调整大小.
有没有办法在动画更改的同时更改集合视图布局和帧大小?
我在iOS7中忙于UICollectionView.
我正在两个不同的布局之间更改我的集合视图的布局.这是UICollectionViewFlowLayout的子类.
这是我点击按钮时更改视图的方式:
-(void)changeViewLayoutButtonPressed
{
self.changeLayout = !self.changeLayout;
if (self.changeLayout){
[self.tableViewLayout invalidateLayout];
[self.tradeFeedCollectionView setCollectionViewLayout:self.grideLayout animated:YES];
}
else {
[self.grideLayout invalidateLayout];
[self.tradeFeedCollectionView setCollectionViewLayout:self.tableViewLayout animated:YES];
}
}
Run Code Online (Sandbox Code Playgroud)
此方法按预期工作,并使用漂亮的动画更改视图.但是在控制台中我收到这些消息:
快照未呈现的视图会导致空快照.确保在屏幕更新后快照或快照之前至少渲染了一次视图.
关于是什么导致这个的任何想法?
这是这个问题的副本.我再次问,因为接受的答案不起作用,没有人提供更多关于假设正确答案是如何工作的解释.
所以情况就是这样:我想将集合视图显示在一行中.为此,我将自定义应用于UICollectionViewFlowLayout集合视图并将滚动设置为水平.一切都工作正常,除了节头消失了.

为了解决这个问题,我实现了这个功能:
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section
{
return CGSizeMake(350, 35);
}
Run Code Online (Sandbox Code Playgroud)
现在显示标题,但问题是它显示在单元格的左侧,而不是通常的顶部.
我在寻找解决方案时偶然发现了上面的链接,但就像我说的那样,接受的答案根本不起作用,我无法找到关于这种情况的其他解决方案.所以有人可以帮助我吗?

我正在使用UICollectionView但未找到以下方法:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
Run Code Online (Sandbox Code Playgroud)
请建议我替换它.
我有一个UICollectionView,根据设备方向使用不同.图像描述了我拥有的和我需要的东西.
是否有可能通过默认的flowlayout获得"我需要它的水平滚动"或者我是否需要制作customflowlayout(指南赞赏)或多个collectionviews?


目标:
为单元格高度的变化设置动画并重新定位周围的单元格.
场景:
集合视图中的某些单元格会加载远程图像.最初,这些单元格的大小是静态的,并显示了活动指示符.加载图像后,将其添加到其单元格中,并更改单元格的高度以适合照片.
笔记:
我用它来动画细胞的框架变化animateWithDuration.这样可以正常工作,除了增加的单元尺寸使其与下面的单元重叠.collectionView.collectionViewLayout invalidateLayout在调整目标单元格大小并更新返回的大小后,我盲目地尝试调用但sizeForItemAtIndexPath没有成功.
有什么建议?谢谢!
示例代码:

objective-c uicollectionview uicollectionviewcell uicollectionviewlayout ios7
我正在研究UICollectionView自定义布局.在两天内我无法理解如何添加标题UICollectionView.我有一个非常简单的视图控制器(在自定义布局的故事板中创建):
class ACollectionViewController: UICollectionViewController {
enum Identifiers: String {
case CellIdentifier = "Cell"
case HeaderIdentifier = "Header"
}
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView.registerClass(UICollectionReusableView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: Identifiers.HeaderIdentifier.rawValue)
}
// MARK: UICollectionViewDataSource
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 10
}
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(Identifiers.CellIdentifier.rawValue, forIndexPath: indexPath) as Cell
cell.backgroundColor = UIColor.redColor() …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个粘性补充标题,它始终保持在顶部并且不会响应滚动事件.到目前为止我找到的解决方案仍然对bounch滚动做出反应,并使用自定义flowlayout进行修复,这可能也是我的问题的解决方案.
我想这样做的原因是标题在其他地方使用,应该是可重用的.我希望这可以通过这种方式解决,我不必创建一个单独的视图.
正如我在Swift中所做的那样,在Swift中有一个例子会很棒.
在视频“集合视图布局的进展 - WWDC 2019”中,Apple 引入了新的“正交滚动行为”功能。我有一个与OrthogonalScrollingViewController示例代码几乎相同的视图控制器。特别是我的集合视图是垂直布局的,每个部分都可以水平滚动(我使用section.orthogonalScrollingBehavior = .groupPaging)。
我想让我的所有部分一致水平滚动。以前,我在每个水平集合视图上监听scrollViewDidScroll,然后手动设置其他视图的内容偏移量。但是,使用新的orthogonalScrollingBehavior实现,scrollViewDidScroll当我水平滚动时,永远不会调用委托。如何使用新 API 检测水平滚动事件?
如果有另一种方法可以使各部分水平滚动在一起,我也愿意接受其他建议。
我正在写一个自定义UICollectionViewFlowLayout,我注意到了,当我在集合视图上调用时initialLayoutAttributesForAppearingItemAtIndexPath:,initialLayoutAttributesForAppearingDecorationElementOfKind:atIndexPath:将调用所有部分performBatchUpdates:completion:.结果是所有部分都应用了动画,而不仅仅是新添加的部分.
[collectionView performBatchUpdates:^{
currentModelArrayIndex++;
[collectionView insertSections:[NSIndexSet indexSetWithIndex:currentModelArrayIndex]];
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:currentModelArrayIndex-1]];
} completion:^(BOOL finished) {
[collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:0 inSection:currentModelArrayIndex] atScrollPosition:UICollectionViewScrollPositionTop animated:YES];
}];
Run Code Online (Sandbox Code Playgroud)
我到目前为止所尝试的是删除调用而performBatchUpdates:completion:不是简单的更新,但是已经存在的部分(所有部分)都是动画的.我想出了一个检查的解决方案,以确保我只更改了最后一节的布局属性,但它感觉很hacky.
if (decorationIndexPath.section == [(id<UICollectionViewDataSource>)self.collectionView.delegate numberOfSectionsInCollectionView:self.collectionView] - 1)
{
layoutAttributes.alpha = 0.0f;
layoutAttributes.transform3D = CATransform3DMakeTranslation(-CGRectGetWidth(layoutAttributes.frame), 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
这是仅仅为某些部分制作动画的正确方法吗?
objective-c uikit ios6 uicollectionview uicollectionviewlayout