определить, когда кадр uiscrollview касается границ основного экрана - PullRequest
0 голосов
/ 22 мая 2011

как я могу определить, когда кадр UIScrollView пересекается с основным экраном (при прокрутке) в обоих направлениях вверх и вниз?я пытался сделать это так:

- (void)detectScreenBoundsIntersect{
    if (CGRectIntersectsRect([myScrollView frame], [[UIScreen mainScreen] bounds])) {
        NSLog(@"COLLISION");
    }
} 

Но, похоже, это не работает!Спасибо.

1 Ответ

0 голосов
/ 22 мая 2011

Примите протокол UIScrollViewDelegate в контроллере представления и установите делегат представления прокрутки на контроллер.Примите метод scrollViewDidScroll:.

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    if ( [self hasReachedAVerticalEdge] ) {
        NSLog(@"At World's End");
    }
}

- (BOOL) hasReachedAVerticalEdge {
    CGPoint offset = myScrollView.contentOffSet;
    CGSize contentSize = myScrollView.contentSize;
    CGFloat height = myScrollView.frame.size.height;
    CGFloat width  = myScrollView.frame.size.width;

    if ( offset.y == 0 || 
         (offset.y + height) == contentSize.height ) {
        return YES;
    }

    return NO;
}

Это то, что вы ищете?

Проверка, попадает ли изображение в видимую часть вида прокрутки.

- (BOOL)isContentFrameVisible:(CGRect)aFrame {
    CGRect visibleRect = CGRectZero;
    visibleRect.origin = myScrollView.offset;
    visibleRect.size = myScrollView.frame.size;

    if ( CGRectIntersectsRect(visibleRect, aFrame) ) {
        return YES;
    }
}
...