gpt4 book ai didi

iphone - UIScrollView setContentOffset : animated: not working

转载 作者:行者123 更新时间:2023-12-03 20:46:25 28 4
gpt4 key购买 nike

我遇到两个无限 UIScrollView 的问题,它们无法正确更改其偏移量。

第一个 UIScrollView 中的项目与第二个 UIScrollView 中的另一个项目相对应。然后,我想将单击的项目放在第二位,并为两个 UIScrollView 中的更改设置动画。为了正确完成此操作,我使用这两种方法:

单击项目时:

- (void)click:(id)sender {
NSInteger index = [[self cells] indexOfObject:sender];
if (index == 1)
{
CategoriesViewController *viewController = [[CategoriesViewController alloc] initWithNibName:@"CategoriesView" bundle:nil];

[[viewController tit] setText:NSLocalizedString([[self categories] objectAtIndex:1], nil)];

[[self navigationController] pushViewController:viewController animated:YES];
}
else
{
for (NSInteger i = 0; i < index - 1; i++)
{
NSObject *object = [[self categories] objectAtIndex:0];
[[self categories] removeObjectAtIndex:0];
[[self categories] addObject:object];
}

for (NSInteger i = 0; i < index - 1; i++)
{
CollectionCellViewController *cell = [[self cells] objectAtIndex:0];
[[self cells] removeObjectAtIndex:0];
[[self cells] addObject:cell];
}

for (NSInteger i = 0; i < index - 1; i++)
{
UIImageView *image = [[self images] objectAtIndex:0];
[[self images] removeObjectAtIndex:0];
[[self images] addObject:image];
}

[self updateViewsOffsets];
}
}

- (void)updateViewsOffsets {
NSInteger y = 0;
for (NSInteger i = 0; i < [[self cells] count]; i++)
{
CollectionCellViewController *cell = [[self cells] objectAtIndex:i];

[[cell view] setTag:i];
if (i == 1)
{
[cell setSelected:[[self categories] objectAtIndex:i]];
}
else
{
[cell setDeselected:[[self categories] objectAtIndex:i]];
}

CGRect rect = [[cell view] frame];
rect.origin.x = 0.0f;
rect.origin.y = y;
[[cell view] setFrame:rect];
y += [[self table] frame].size.height / 2.0f;
}

y = 0;
for (NSInteger i = 0; i < [[self images] count]; i++)
{
UIImageView *image = [[self images] objectAtIndex:i];
CGRect rect = [image frame];
rect.origin.x = 0.0f;
rect.origin.y = y;
[image setFrame:rect];
y += [[self gallery] frame].size.height;
}

[[self table] setContentOffset:CGPointMake(0.0f, [[self table] frame].size.height / 2.0f) animated:YES];
[[self gallery] setContentOffset:CGPointMake(0.0f, [[self table] contentOffset].y * 8.0f) animated:YES];
}

更改已完成,但没有动画,它与 YES 或 NO 具有相同的行为,它只调用一次 scrollViewDidScroll: 。但是,我在其他方法中使用 setContentOffset:animated: ,它可以与 UIScrollView 一起正常工作。

请问有什么想法吗?预先非常感谢您。

最佳答案

我刚刚遇到了这个问题。我通过将调用分派(dispatch)到主线程来修复它。试试这个:

dispatch_async(dispatch_get_main_queue(), ^{
[[self table] setContentOffset:CGPointMake(0.0f, [[self table] frame].size.height / 2.0f) animated:YES];
[[self gallery] setContentOffset:CGPointMake(0.0f, [[self table] contentOffset].y * 8.0f) animated:YES];
});

关于iphone - UIScrollView setContentOffset : animated: not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5882232/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com