CATransform3D 奇怪的 UIScrollView contentOffset
Posted
技术标签:
【中文标题】CATransform3D 奇怪的 UIScrollView contentOffset【英文标题】:CATransform3D weird UIScrollView contentOffset 【发布时间】:2012-03-29 10:30:31 【问题描述】:当 UIScrollview 在 scrollViewDidScroll 委托方法中滚动时,我正在做一个很酷的 CA3DTransform。当您使用手指滚动时,它可以完美运行,因此手动滚动时一切都很完美。
但是,当我以编程方式设置滚动视图内容偏移时:
[scrollView setContentOffSet:CGPointMake(0,460) animated:YES];
它仍然调用委托方法scrollviewdidscroll,所以调用了相同的动画方法,所以我仍然看到正确的动画,但是,在动画期间和之后,视图的某些部分丢失了!我试图在所有东西上设置 layer.zPosition ,但它似乎没有帮助。应该没问题,因为手动滚动确实可以工作而不会丢失部分视图...以某种方式以编程方式调用此方法有所不同,我不知道为什么!
【问题讨论】:
发布您的 CATransform3D 代码,您的透视图或剪切平面很可能有些奇怪。或者,禁用 3D 透视图并确认视图仍然正确显示。然后,您可以将您的 3D 代码一块一块地带来,直到您确定问题为止。 我确实禁用了 3D,然后就没有问题了,所以这肯定是 3D 的问题,但只有在以编程方式滚动时。 【参考方案1】:以这种方式发布您的问题不是很清楚,考虑到使用委托 scrollViewDidScroll,我可以手动或以编程方式打印代码。
...
UIScrollView *sv = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 10, 320, 200)];
[sv setContentSize:CGSizeMake(640, 200)];
sv.delegate = self;
[sv setContentOffset:CGPointMake(320, 0) animated:YES];
[self.view addSubview:sv];
...
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
NSLog(@"---%@---", NSStringFromCGPoint(scrollView.contentOffset));
在这个简单的示例中,您可以看到委托确实有效。 请原谅答案很简单,但您提出的唯一问题很难为您提供帮助。
【讨论】:
【参考方案2】:我遇到了类似的问题(在使用滚动视图进行幻灯片放映的情况下),但通过使用scrollRectToVisible:NO
解决了它(没有动画则为否),并将其包装在 UIView 动画块中,我还放了我的动画代码.
【讨论】:
以上是关于CATransform3D 奇怪的 UIScrollView contentOffset的主要内容,如果未能解决你的问题,请参考以下文章