Хотя я не полностью удовлетворен своим решением, я пришел к следующему: в методе делегата -scrollViewDidScroll
я проверяю, является ли текущий видимый регион субрегионом моей ограниченной области.Если это не так, я корректирую смещение содержимого без анимации, чтобы сделать видимую область соответствующей ограничениям.
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView{
if (!CGRectContainsRect(myLimitRect, [aScrollView visibleRect]){
// calculate new contents offset to make visible region fit limits
[aScrollView setContentOffset:newContentOffset animated:NO};
}
}
При этом мне не нужно явно применять сложные CGAffineTransforms к моему представлению содержимого (не нужно масштабироватьпереведите представление) - все, что мне нужно, это повернуть его, и, похоже, UIScrollView справится с этим довольно хорошо.