我需要这样的东西
+ scrollview
|
|__ moving content
|
|__ non moving content
棘手的部分是我正在修改现有的代码,我无法使用 scrollview parent将“非移动内容”设置为它的子级。不动的内容 必须是一个scrollview孩子。我想把它附加到背景视图但是 我不知道如何访问UIScrollview的背景视图。
答案 0 :(得分:3)
我认为“推荐”的方法是在自定义UIScrollView子类中覆盖layoutSubviews。如果您是开发人员计划成员,您应该在2010 WWDC会议中讨论(IIRC)。
假设您无法继承UIScrollView(鉴于您对修改现有代码的限制),您可以执行以下操作。
让“staticView”成为您想要修复的“非移动内容”:
UIView *staticView;
创建一个ivar(可能在您的视图控制器中)以保存其初始中心:
CGPoint staticViewDefaultCenter = [staticView center]; // Say, in viewDidLoad
将视图控制器设置为滚动视图的委托(如果尚未执行),然后执行以下操作:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGPoint contentOffset = [scrollView contentOffset];
CGPoint newCenter = CGPointMake(staticViewDefaultCenter.x + contentOffset.x,
staticViewDefaultCenter.y + contentOffset.y);
[staticView setCenter:newCenter];
}
这将涵盖可滚动视图的简单情况。处理可缩放视图会变得有点棘手,部分取决于你如何实现viewForZoomingInScrollView:方法,但是遵循一个类似的过程(这次是在scrollViewDidZoom中:当然)。
我没有想过在你的staticView上进行转换的含义 - 在这种情况下你可能不得不做一些操作。