Как центрировать конкретную ImageView-координату в UIScrollView - PullRequest
0 голосов
/ 19 сентября 2010

Как мне лучше всего расположить изображение (UIImageView) в UIScrollView программно?

У меня есть координаты x и y (CGPoint C = centerCoordinate) положения изображения, которое необходимо отцентрировать по горизонтали и вертикали в UIScrollView.

===Image=============================================
|                                                   |
|                                                   |
|              ==ScrollView===                      |
|              |             |                      |
|              |      C      |                      |
|              |             |                      |
|              ===============                      |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
=====================================================

Я пытался) работать ссвойство center ImageView, но, похоже, здесь нет прогресса.б) затем я попытался вычислить свойство кадра, установив начало координат на

  C.x = -1 * centerCoordinate.x + ScrollView.frame.size.width / 2
  C.y = -1 * centerCoordinate.y + ScrollView.frame.size.width / 2

, но безуспешно.

какие-либо подсказки?

касается

1 Ответ

0 голосов
/ 24 сентября 2010

Я думаю, что нашел способ сделать это. Меня поразило, как учитывать zoomScale, а также учитывать правильные координаты кадра, поскольку они меняются во время операций масштабирования и прокрутки.

Решение, которое сейчас работает, реализовано в UIScrollView и выглядит так:

- (void) setViewPosition:(CGPoint) tapPoint zoomScale:(NSNumber *)zoomScale {
   ...
   self.zoomScale = zoomScale.floatValue;

   // Determine new center coordinate
   CGPoint mCOffset;
   mCOffset.x = tapPoint.x * self.zoomScale - frameSizeIvar.width  / 2;
   mCOffset.y = tapPoint.y * self.zoomScale - frameSizeIvar.height / 2;

   // Check whether center coordinate will place the map out of range
   // x-coordinate
   if ( mCOffset.x < 0 ) 
       mCOffset.x = 0;
   else if ( mCOffset.x > imageView.bounds.size.width * self.zoomScale - frameSizeIvar.width)
       mCOffset.x = imageView.bounds.size.width * self.zoomScale - frameSizeIvar.width;

   // y-coordinate
   if ( mCOffset.y < 0 ) 
      mCOffset.y = 0;
   else if ( mCOffset.y > iMapImageView.bounds.size.height * self.zoomScale - frameSizeIvar.height)
      mCOffset.y = iMapImageView.bounds.size.height * self.zoomScale - frameSizeIvar.height;

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