В основном вы хотите проверить, пересекается ли кадр подпредставлений внутри UIScrollView
с рамкой прокрутки (если вы хотите определить только частичную видимость), или содержится ли кадр в другом кадре (если вы хотите определить,полная видимость).
Однако, чтобы проверить, пересекается ли фрейм подпредставления и / или содержится ли в фрейме прокрутки, вам необходимо перевести его из локальных координат внутри прокрутки в глобальные координаты вне прокрутки.
Это, вероятно, довольно запутанно, так что вот код.Это будет циклически перебирать все подпредставления прокрутки и выводить, является ли оно полностью видимым или частично видимым:
for (UIView *subview in scrollView)
{
CGRect globalRect = CGRectOffset(subview.frame, -scrollView.contentOffset.x, -scrollView.contentOffset.y);
CGRect scrollViewBounds = CGRectMake(0.0f, 0.0f, scrollView.bounds.size.width, scrollView.bounds.size.height);
if (CGRectContainsRect(scrollViewBounds, globalRect)) {
NSLog(@"FULLY VISIBLE");
} else if (CGRectIntersectsRect(scrollViewBounds, globalRect)) {
NSLog(@"PARTIALLY VISIBLE");
}
}
Вы можете поместить это в метод UIScrollViewDelegate
, чтобы выполнять эти проверки, пока пользователь выполняет прокрутку.содержание вокруг.