Как увеличить масштаб до центра с помощью scrollview?

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

Мы используем

(CGRect) zoomRectForScale: (float) scale withCenter: (CGPoint) центр

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

Мы попытались сделать это

centerPoint = [scrollView contentOffset]; centerPoint.x += [scrollView frame].size.width / 2; centerPoint.y += [scrollView frame].size.height / 2; CGRect zoomRect = [self zoomRectForScale:newScale withCenter:centerPoint]; 

Который должен рассчитать текущий центр, а затем передать его zoomRectForScale, однако он не работает (он масштабируется справа от центра).

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

One Solution collect form web for “Как увеличить масштаб до центра с помощью scrollview?”

Мы получили его работу, и я думал, что опубликую то, что мы закончили

  /** Function for the scrollview to be able to zoom out **/ -(IBAction)zoomOut { float newScale = [scrollView zoomScale] / ZOOM_STEP; [self handleZoomWith:newScale andZoomType: FALSE]; } /** Function for the scrollview to be able to zoom in **/ -(IBAction)zoomIn { float newScale = [scrollView zoomScale] * ZOOM_STEP; [self handleZoomWith:newScale andZoomType: TRUE]; } -(void)handleZoomWith: (float) newScale andZoomType:(BOOL) isZoomIn { CGPoint newOrigin = [zoomHandler getNewOriginFromViewLocation: [scrollView contentOffset] viewSize: scrSize andZoomType: isZoomIn]; CGRect zoomRect = [self zoomRectForScale:newScale withCenter:newOrigin]; [scrollView zoomToRect:zoomRect animated:YES]; } 

а затем в классе zoomHandler мы имели это

 -(CGPoint) getNewOriginFromViewLocation: (CGPoint) oldOrigin viewSize: (CGPoint) viewSize andZoomType:(BOOL) isZoomIn { /* calculate original center (add the half of the width/height of the screen) */ float oldCenterX = oldOrigin.x + (viewSize.x / 2); float oldCenterY = oldOrigin.y + (viewSize.y / 2); /* calculate the new center */ CGPoint newCenter; if(isZoomIn) { newCenter = CGPointMake(oldCenterX * zoomLevel, oldCenterY * zoomLevel); } else { newCenter = CGPointMake(oldCenterX / zoomLevel, oldCenterY / zoomLevel); } /* calculate the new origin (deduct the half of the width/height of the screen) */ float newOriginX = newCenter.x - (viewSize.x / 2); float newOriginY = newCenter.y - (viewSize.y / 2); return CGPointMake(newOriginX, newOriginY); } 
Interesting Posts

glGenTextures Возврат существующего имени текстуры

Разрешить вызов (и карты и почту) в кордове

Следует ли включать Отображаемое имя в качестве ключевого слова App Store, если оно отличается от названия приложения?

Проблема с UICollectionView: не отображает метки всех его ячеек

XCode 8.2.1 Не удается добавить ссылку на папку

Изменить размер шрифта UISegmentedControl

Как не показывать ненужные нули при задании целых чисел, но при необходимости поплавать

Не удалось открыть порт для отладчика. Другим процессом может быть использование порта

Приложение iPad сбой после синхронизации с iTunes

Лучший способ общения между ViewModel и контроллером

Нарисуйте градиент без обвязки (i)

productsRequest не работает в быстрой для покупок в приложении

IOS Game Center Достижение загрузки

Делегат после подкласса?

Создание эскизов из локального видео в быстром

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.