【发布时间】:2014-08-20 09:15:06
【问题描述】:
在 self.view 下我有一个名为 self.scrollView 的 UIScrollView,在 self.scrollView 下我有两个名为 self.panedView 和 self.recordView 的 UIViews。我的 self.panedView 的高度为 568,Y 原点为 0,self.recordView 的高度为 274,Y 原点为 568。我的 self.scrollView 的内容大小高度等于 842 的高度( self.panedView 的高度 + self.recordView 的高度)。我想在 self.panedView 上添加一个名为 self.iconImageView 的UIImageView,这样当我滚动时,imageView 将向上移动到与我滚动量相关的某个位置。 self.iconImageView 的 Y 位置为 184,只是 self.view 的子类。每当通过执行以下操作检测到向上滑动时,我最初都会使用 UIView animationWithDuration 移动 self.iconImageView:
- (void)viewDidLoad
{
[self.view insertSubview:self.iconImageView aboveSubview:self.panedView];
}
[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
self.iconImageView.frame = CGRectOffset(self.iconImageView.frame, 0, -85.5);
} completion:nil];
既然我已经切换到UIScrollView,我该如何复制它?我在想这样的事情可能会奏效:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if(self.iconImageView.center.y >= 184 && self.iconImageView.center.y <=451)
{
CGPoint newCenter = CGPointMake(self.view.bounds.size.width/2, self.iconImageView.center.y + (self.scrollView.contentOffset.y/self.scrollView.contentOffset.y));
self.iconImageView.center = newCenter;
}
}
【问题讨论】:
-
为什么不直接将 UIImageView 添加为 pannedView 的子视图?或者直接将它添加到您的 pannedView 之上,但作为 UIScrollView 的子视图。
-
我认为将它作为 pannedView 的子视图包含在内会使它变得更加棘手。如果它不在scrollView下,至少我可以采用scrollView的垂直contentOffSet并通过更改imageView中心Y或执行CGRectOffset来转换我的imageView的Y原点以相应移动。它没有像我希望的那样工作。
-
所以最初我将 panedView 和 iconImageView 移动到我希望它们在检测到滑动时使用
UIView animationWithDuration和CGRectOffset的位置。但是,现在我使用 scrollView.contentOffset 来翻译 iconImageView 以相对于内容视图的移动进行移动。这样做的问题是 iconImageView 到达了它应该停止的地方,而 panedView 距离它的停止点还有很长的路要走。
标签: ios cocoa-touch uiscrollview uiimageview