Получить увеличенный кадр UIScrollView относительно оригинального размера - PullRequest
8 голосов
/ 04 октября 2010

У меня есть UIScrollView и я добавил в него UIView, когда я увеличиваю его, возможно ли получить CGRect увеличенного кадра относительно исходного кадра?

например. у меня есть кадр 800x600, затем я увеличил масштаб до {{50, 60}, {100, 100}}, возможно ли программно получить увеличенный кадр?

Ответы [ 2 ]

9 голосов
/ 04 октября 2010

Я обычно использую следующий метод (добавленный в пользовательскую категорию UIScrollView):

- (CGRect) visibleRect{
    CGRect visibleRect;

    visibleRect.origin = self.contentOffset;
    visibleRect.size = self.bounds.size;

    visibleRect.origin.x /= self.zoomScale;
    visibleRect.origin.y /= self.zoomScale;
    visibleRect.size.width /= self.zoomScale;
    visibleRect.size.height /= self.zoomScale;
    return visibleRect;
}
5 голосов
/ 25 мая 2012

Проблема с решением @Vladimir заключается в том, что он отображает visibleRect неправильно, если viewForZoom меньше границ ScrollView. Поэтому я придумала это решение.

- (CGRect) zoomedFrame{
    CGRect zoomedFrame;

    zoomedFrame.origin = self.contentOffset;
    zoomedFrame.origin.x -= zoomingView.frame.origin.x;
    zoomedFrame.origin.y -= zoomingView.frame.origin.y;
    zoomedFrame.size = self.contentSize;
    return zoomedFrame;
}

zoomingView - это представление, которое возвращает viewForZoomingInScrollView: метод.
bounds являются границами scrollView.


Итак, есть два случая:

  1. Если zoomingView меньше, чем bounds, contentOffset отражает не верхний левый угол представления содержимого, а некоторый странный сдвиг представления содержимого относительно центра bounds. И zoomingView.frame.origin имеет нормальные значения, как если бы zoomingView были в центре bounds. ( это происходит, если вы пытаетесь уменьшить масштабирование более чем на minimulScale)

  2. Когда zoomingView больше, чем bounds, zoomingView.frame.origin имеет странные значения, подобные этому:

    {- 6.15367e-06, 3.98168e-06}

    И contentOffset показывает, что должно .


Так что все это компенсирует друг друга, как я показал в своем коде.

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