1
votes

I have a have a strip of UIViews that slides horizontally behind a UIView "window". Only the UIViews within the bounds of the "window" are seen. As a view becomes hidden I would like to be notified so that I can perform some task with the just hidden view. What is the best way to do this?

2

2 Answers

2
votes

In your UIScrollViewDelegate:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    // left and right bounds of the subview in relation to the scrollview
    CGFloat left = mySubview.frame.origin.x - myScrollView.contentOffset.x;
    CGFloat right = left+mySubview.frame.size.width - myScrollView.contentOffset.x;
    if(right<=0 || left>=myScrollView.frame.size.width){
        // The view is not visible
    }
}

this checks if either the left or right side of the subview is visible.

1
votes

Add a callback selector to your animation:

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:theView cache:NO];
    [UIView setAnimationDidStopSelector:@selector(animationDone)];
    theView.frame = newFrame;
    [UIView commitAnimations];