1

所以基本问题是,当我单击单元格时,它应该转到新视图控制器中的单元格索引 1,但是当您启用自动布局时。collectionview 内容偏移更改消失并重置。关闭它,工作正常。自动布局以某种方式导致内容偏移重置,但我不确定为什么或如何解决这个问题。

此处提供代码。

https://github.com/HaloZero/AutolayoutCollectionViewIssue

4

2 回答 2

1

使用您的代码:--

- (void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self performSelectorOnMainThread:@selector(doyouwork) withObject:nil waitUntilDone:NO];
}

-(void)doyouwork
{
    [self snapToCellAtIndex:1 withAnimation:NO];
}

- (void) snapToCellAtIndex:(NSInteger)index withAnimation:(BOOL) animated
{
    NSIndexPath *path = [NSIndexPath indexPathForRow:index inSection:0];
    [self.collectionView scrollToItemAtIndexPath:path atScrollPosition:UICollectionViewScrollPositionLeft animated:animated];
}

为我工作。

于 2013-06-05T05:53:32.007 回答
0

并不是说自动布局正在重置内容偏移量,而是当您尝试捕捉单元格时子视图尚未定位。

使用自动布局,子视图定位稍晚(其中首先调用viewWillAppear)。尝试使用 viewDidLayoutSubviews 来捕捉单元格:

viewDidLayoutSubviews的文档中:

通知视图控制器它的视图刚刚布置了它的子视图。

因此,在计算完所有约束并放置子视图之后,您可以调用捕捉方法。

- (void)viewDidLayoutSubviews
{
    [super viewWillLayoutSubviews];
    [self snapToCellAtIndex:1 withAnimation:NO];
}
于 2013-06-05T05:36:27.993 回答