UIScrollView странное поведение: увеличение, панорамирование, уменьшение оставляет представление контента без центра - PullRequest
4 голосов
/ 05 февраля 2010

У меня есть пользовательский подкласс UIViewController, управляющий UISCrollView, содержащий UIImageView, настроенный так:

UIViewController
+ UIScrollView (delegate: UIViewController, viewForZoomingInView: UIImageView)
  + UIImageView

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

Я ожидал, что при уменьшении UIScrollView перецентрирует область contentSize под ее границами, чтобы вы никогда не видели за пределами представления содержимого (точнее, размера представления содержимого плюс contentInset). Я ошибаюсь в этом предположении?

Если так, что я должен сделать, чтобы обеспечить такое поведение?

Вот мой код:

- (void)viewDidLoad
{
    [super viewDidLoad];

    imageView.image = image;
    [imageView sizeToFit];

    float minimumScale = [imageScrollView frame].size.width  / [imageView frame].size.width;

    imageScrollView.contentSize = [imageView frame].size;    
    imageScrollView.maximumZoomScale = 2.0;
    imageScrollView.minimumZoomScale = minimumScale;

    imageScrollView.zoomScale = imageScrollView.minimumZoomScale;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return imageView;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    // nothing
}

РЕДАКТИРОВАТЬ: Решение!

Вы должны установить clipsToBounds = YES в UIScrollView, чтобы получить желаемое поведение. Сначала я этого не обнаружил, потому что это свойство UIView, а не UIScrollView напрямую.

1 Ответ

1 голос
/ 30 ноября 2010

Я видел то же самое на своем UIImageView с пинч-входом и выходом, в IB я включил «Подвиды клипа», и представление «Изображение» стало работать лучше.

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