UIImageView / UIScrollView forçant un format d'image fixe pour s'adapter à l'écran

Je fais une simple application pour iPad qui se compose d'un géant de l'image que vous pouvez effectuer un zoom in/out sur et à naviguer.

Cette image est placée à l'intérieur d'un UIImageViewqui est ensuite placé à l'intérieur d'un UIScrollView.

La navigation et de zoom à 100% d'accord; cependant, l'image est chargée fixe à un rapport d'aspect de l'écran, et ne changera jamais (même lorsque le zoom-in).

J'ai le sentiment que l'Interface Builder est la définition de certains biens que je ne suis pas au courant, mais j'ai essayé tout ce que je peux penser de résoudre ce problème.

Le Problème:

Lors de l'application du chargement initialement, le contenu à l'intérieur de la UIScrollView est automatiquement redimensionné pour ajuster l'écran de l'iPad par le rapport d'aspect a changé./fixe; l'image réelle est grand (plus grand que l'iPad résolution). Cette échelle aspect ratio demeure même lorsque le zoom sur l'image, et les causes de l'image à regarder tendu.

Peu importe ce que j'essaie, je ne peux pas arrêter l'iPad automatiquement changer la taille de mon image. Je veux simplement l'application à lancer avec mon image s'affiche normalement (zoom 100%) sur l'iPad, avec la partie qui actuellement s'inscrit sur l'écran de l'iPad étant le coin supérieur gauche de l'image.

Ce que j'ai essayé de résoudre le problème:

J'ai essayé de changer les UIImageView's contenu mode dans Interface Builder "en Haut à Gauche". Cela semblait fonctionner parfaitement, mais ensuite j'ai réalisé que la UIScrollView ne serait pas vous laisser défiler autour de l'image passé l'affichage initial de la partie (en haut à gauche). Vous pourriez faire un zoom avant sur la partie supérieure gauche de la portion et de défilement, mais jamais passé ce qui était d'abord montré sur l'écran.

Code:

Voici le code que j'utilise pour la configuration de la vue. imageScrollView est le UIScrollViewet imageView est le UIImageView. Ils sont à la fois IBOutlets.

   //Set the needed attributes of the imageView
    [imageView setImage:[UIImage imageNamed: @"TestImage.png"]];
    imageView.userInteractionEnabled = YES;

    //Set a bunch of the imageScrollView attributes.

    //calculate minimum scale to perfectly fit image width, and begin at that scale
    float minimumScale = [imageScrollView frame].size.width  / [imageView frame].size.width;
    [imageScrollView setMinimumZoomScale:minimumScale];
    [imageScrollView setZoomScale:1];
    [imageScrollView setMaximumZoomScale:10];
    [imageScrollView setContentSize:CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];
    [imageScrollView setScrollEnabled:YES];
    [imageScrollView setUserInteractionEnabled:YES];
    imageScrollView.clipsToBounds = YES;
    imageScrollView.bounces = FALSE;
    imageScrollView.bouncesZoom = FALSE;

J'ai également deux UIGestureRecongizers à la poignée du robinet-zoom, mais je ne crois pas qu'ils sont le problème. Quand j'en commentaires, rien ne change.

Toute aide serait extrêmement apprécié.

source d'informationauteur AlexFZ