首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在自动布局中使用固有大小动态调整UICollectionView的大小

在自动布局中使用固有大小动态调整UICollectionView的大小
EN

Stack Overflow用户
提问于 2012-11-15 01:04:27
回答 1查看 4.3K关注 0票数 2

我正在尝试使用UICollectionView实现一个日历,它在更改月份时具有类似于内置日历应用程序的滚动行为。目前,视图正在闪烁,因为调整大小发生在两个月之间。

我使用的是一个在1节中有10000个索引的UICollectionView的UICollectionViewScrollLayout。通过计算索引的日期来填充单元格。我遇到的问题是,当尝试调整视图大小以适应该月的正确周数时,随着滚动和视图大小的变化,集合视图似乎不能足够快地在单元格中绘制。在放慢了动画的速度后,随着视图大小的改变,似乎过早地从视图中删除了单元。缩小和放大视图时都会发生这种情况。也就是说,当他们要滚动离开视图时,他们会在滚动出视图之前被删除。

布局都是使用自动布局完成的,上面有一个固定的视图,下面有一个可调整大小的视图。当集合视图的大小改变时,下面的视图也会改变以填充空间。我似乎设法实现此行为的唯一方法是按照下面的代码更改内部大小。我试过更改框架/边界,但似乎不适用于自动布局。我以正确的方式调整视图的大小吗?

我是否应该将行为移动到视图控制器,并更改固定高度的约束。

代码语言:javascript
运行
复制
// Scroll the view to the date given.
-(void) moveViewToDate:(NSDate*) date
{
    NSIndexPath *indexPath=[self indexPathForFirstDayInMonth:date];
    [self scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionTop animated:YES];

    [UIView animateWithDuration:0.25f animations:^{
        self.isize=[self weeksInViewForDate:date];
       [self invalidateIntrinsicContentSize];
       [self.superview layoutIfNeeded];
    }];
}

-(CGSize)intrinsicContentSize
{
    return CGSizeMake(322,self.isize*46);   
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-20 05:08:13

我终于弄清楚是怎么回事了。由于我提交了一个改变视图大小的动画并进行滚动,因此两个分离的动画相互冲突。

我最终使用UIScrollView重写了这个集合,但也遇到了同样的问题。我通过将UIScrollView放在UIView中来绕过它。使用对动画高度的约束来调整UIView的大小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13383592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档