2012-09-19 69 views
2

我想显示一个图像,停留在页面上5秒,但每次我的滚动视图滚动时出现。所以显然我需要结婚的动画UILabelUIScrollView的一些方法。林不知道哪一个要诚实。另外我有两个UIScrollView在一个UIViewController所以我不知道我应该设置为代表。UIScrollView做滚动

以下是动画我目前所面对的

[UIView animateWithDuration:0.3 animations:^{ // animate the following: 
    pageCountImage.frame = CGRectMake(0, 0, 100, 50); // move to new location 
}]; 
+0

如果动画发生滚动启动或停止时? – Mike

+0

动画应该在滚动停止时开始,然后动画在5秒内停止。 – CodeGeek123

回答

4

您的视图控制器可以是两个滚动视图的委托。同意@Ravi你可以使用委托参数来确定哪个滚动视图正在滚动。

听起来像是你需要打包到有意义的UI几个动画:

// hide or show the page count image after a given delay, invoke completion when done 
- (void)setPageCountImageHidden:(BOOL)hidden delay:(NSTimeInterval)delay completion:(void (^)(BOOL))completion { 

    BOOL currentlyHidden = self.pageCountImage.alpha == 0.0; 
    if (hidden == currentlyHidden) return; 

    [UIView animateWithDuration:0.3 delay:delay options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
     self.pageCountImage.alpha = (hidden)? 0.0 : 1.0; 
    } completion:completion]; 
} 

// move the page count image to the correct position given a scroll view content offset 
- (void)positionPageControlForContentOffset:(CGFloat)xOffset { 

    // assume page width is a constant (the width of a page in the scroll view) 
    NSInteger page = xOffset/kPAGEWIDTH; 

    // assume max page is a constant (the max number of pages in scroll view) 
    // scroll positions in the "bounce" will generate page numbers out of bounds, fix that here... 
    page = MAX(MIN(page, kMAXPAGE), 0); 

    // kPAGE_INDICATOR_WIDTH the distance the page image moves between pages 
    // kPAGE_INDICATOR_ORIGIN the page image x position at page zero 
    CGFloat xPosition = kPAGE_INDICATOR_ORIGIN + page * kPAGE_INDICATOR_WIDTH; 

    // assume y position and size are constants 
    CGRect pageIndicatorFrame = CGRectMake(xPosition, kYPOS, kWIDTH, kHEIGHT); 

    // finally, do the animation 
    [UIView animateWithDuration:0.3 animations:^{ 
     self.pageCountImage.frame = pageIndicatorFrame; 
    }]; 
} 

然后在视图并滚动:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 

    if (scrollView == /* the scroller with the page control */) { 

     [self setPageCountImageHidden:NO delay:0.0 completion:^(BOOL finished) { 
      [self positionPageControlForContentOffset:scrollView.contentOffset.x]; 
      [self setPageCountImageHidden:YES delay:5.0 completion:^(BOOL finished){}]; 
     }]; 
    } 
    // and so on... 
3

你应该实现<UIScrollViewDelegate>。使用方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView并在其中写入您的动画代码。如果你有多个滚动视图,你可以这样做:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if(scrollView == myScrollView1) 
     // do something 
    else if (scrollView == myScrollView2) 
     // do something else 
    else 
     // do something else 
}