Запрет UIScrollView от перемещения содержимого в верхнем левом углу - PullRequest
3 голосов
/ 15 марта 2011

У меня UIImageView содержится в UIScrollView. Изображение (обычно) большое, поэтому пользователь может уменьшить его, чтобы увидеть все.

Однако при уменьшении UIScrollView привязывает ImageView к верхнему левому углу просмотра прокрутки. Я хочу, чтобы пользователь мог позиционировать его, но пока не нашел способа его отключить.

Это все равно, что всегда разрешать прокрутку, а не только прокрутку, когда изображение увеличено. Может быть, это слишком серьезное изменение?

Кто-нибудь знает способ? Первоначально я собирался создать эту функциональность вручную. Но UIImageViews не любят приспосабливаться к новым размерам (я пробовал все, и не могу получить UIImageView, чтобы изменить размер, ЕСЛИ Я не удаляю картинку из imageView, меняю рамку и заново добавляю ее).

Ответы [ 3 ]

5 голосов
/ 16 марта 2011

Я закончил тем, что отключил UIScrollView panGestureRecognizer и вложил его в пользовательский.

Вот небольшой фрагмент о том, как его отключить:

// Disable our GestureRecognizer
for (UIGestureRecognizer *gesture in scrollView.gestureRecognizers){
    if ([[NSString stringWithFormat:@"%@",[gesture class]] isEqualToString:@"UIScrollViewPanGestureRecognizer"]){
        [gesture setEnabled:NO];
        break;
    }
}

Немногохакерской работы там, но это связано с тем, что UIScrollViews изменил класс GestureRecognizer на «UIScrollViewPanGestureRecognizer».Компилятор будет кричать на вас, если вы попытаетесь использовать этот класс (возможно, есть лучшее решение).

1 голос
/ 15 марта 2011

Если вы найдете UIImageView в позиции 0,0 в UIScrollView, то это всегда будет в верхнем левом углу. Если вы хотите, чтобы он был в центре прокрутки, когда он меньше, чем вид, вам нужно расположить его там. Проверьте, больше или меньше -size, чем у прокрутки. Если оно меньше, чем вид прокрутки, установите его -center таким же, как у прокрутки.

0 голосов
/ 29 мая 2017

Проверьте мой ответ на похожий вопрос здесь

...