zoomToRect странное поведение - PullRequest
0 голосов
/ 23 марта 2011

У меня проблема с функцией zoomToRect.У меня есть представление прокрутки, которое содержит представления.Когда пользователь нажимает на вид, я запускаю увеличение.Это работает за исключением того, что, когда позиция y кадра выше 2389, функция увеличения масштаба до соответствующего кадра в позиции 2389 y.

Вот код, который я использую:

-(void) launchZoomInAnimationInView:(UIView*) cellView; {
    // Get the rect corresponding to the clicked cell
    CGRect zoomedFrame = [self.zoomScrollView convertRect:cellView.frame fromView:cellView.superview];  

    // Zoom to the rect
    [self.zoomScrollView zoomToRect:zoomedFrame animated:YES];

    // Display for debugging
    [ViewToolkit showFrame:zoomedFrame inView:self.zoomScrollView];
    NSLog (@"Zoom on frame %@ with contentSize %f", NSStringFromCGRect(zoomedFrame), self.zoomScrollView.contentSize.height);
}

Функция showframe показывает мне, что рассчитанная мной рамка находится в правильном положении (я отображаю красный прямоугольник на экране).

NSLog показывает, что размер контента достаточно велик:

Увеличение кадра {{100, 3021.6}, {230.4, 307.2}} с содержимым размером 10337.759766.

В конце анимации я отображаю границы scrollView, и он дает мне {{100, 2389 }, {768, 1024}} вместо {{100, 3021,6 }, {768, 1024}} Я действительно не понимаю.Для любого значения выше 2389 я всегда получаю конечный кадр с позицией 2389 г.И это значение не меняется, когда contentSize отличается.

Обратите внимание, что перед запуском этой функции я не менял zoomScale scrollView.

1 Ответ

0 голосов
/ 24 марта 2011

Проблема была из-за моей функции viewForZoomingInScrollView, которая возвращала сам scrollview, в то время как он должен был вернуть дочерний элемент scrollView.

Смотрите полный ответ здесь: https://devforums.apple.com/message/406487

Согласно обсуждению на форуме Apple, похоже, что в Apple API есть ошибка, поэтому мы НИКОГДА не должны возвращать scrollView в viewForZoomingInScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...