Как определить область, видимую в данный момент в виде прокрутки, и определить центр? - PullRequest
1 голос
/ 29 февраля 2012

У меня есть картографическое приложение, в котором пользователь может размещать путевые точки вручную.Я бы хотел, чтобы они нажали кнопку путевой точки и поместили путевую точку в центр их видимого в данный момент вида на представлении содержимого.

Ответы [ 2 ]

2 голосов
/ 29 февраля 2012

Нужно учесть, насколько оно увеличено, тогда я могу преобразовать смещение контента в размер полного изображения и добавить его. /// это полный размер изображения карты CGSize fullSize = CGPointMake (13900, 8400);

    /// determines how the current content size compares to the full size
    float zoomFactor = size.width/self.contentSize.width; 

    /// apply the zoom factor to the content offset , this basically upscales 
    /// the content offset to apply to the dimensions of the full size map

    float newContentOffsetX = self.contentOffset.x*zoomFactor + (self.bounds.size.width/2) *zoomFactor-300;
    float newContentOffsetY = self.contentOffset.y*zoomFactor + (self.bounds.size.height/2) * zoomFactor-300;

    /// not sure why i needed to subtract the 300, but the formula wasn't putting 
    /// the point in the exact center, subtracting 300 put it there in all situations though 

    CGPoint point = CGPointMake(newContentOffsetX,newContentOffsetY );
2 голосов
/ 29 февраля 2012

Боюсь, вам придется рассчитать это самостоятельно. contentSize возвращает размер прокручиваемого контента, contentOffset дает вам источник представления прокрутки внутри контента. Затем с помощью scrollView.bounds.size вы можете найти центр обзора.

Не проверял это, но, возможно, вы могли бы преобразовать scrollView.center в свою прокручиваемую карту следующим образом:

CGPoint viewportCenterInMapCoords = 
        [scrollView.superview convertPoint:scrollView.center
                                    toView:mapViewInsideScrollView];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...