2010-06-07 3 views
0

Je voulais trouver un moyen "facile" d'utiliser la fonction pincement/zoom sur mon application! alors j'ai décidé d'utiliser un UIScrollView. jusqu'ici tout va bien.UIScrollView chargement d'une image

je charge mon image à partir d'un sqlite db comme ceci:

 - (void)viewWillAppear:(BOOL)animated { 
      imageView.image = entity.Aattribute; 
     } 


    - (void)viewDidLoad { 
       self.title = @"Title"; 

     imageView = [[UIImageView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 
     imageView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
     imageView.contentMode = UIViewContentModeScaleAspectFit; 
     imageView.backgroundColor = [UIColor blackColor]; 


      myScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height); 
      myScrollView.maximumZoomScale = 4.0; 
      myScrollView.minimumZoomScale = 0.75; 
      myScrollView.clipsToBounds = YES; 
      myScrollView.delegate = self; 

      [myScrollView addSubview:imageView]; 


self.view = myScrollView; 



     } 


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

toute aide serait appréciée!

merci pour votre temps!

EDIT: Je vais juste répondre à ma propre question ici! (Je m'améliore à ceci! LOL)

ci-dessus est le code de fonctionnement. je l'ai édité, donc si quelqu'un a besoin de cela peut s'y référer! merci pour les réponses!

+0

C'est bien que vous répondiez à votre propre question, mais il est courtois d'expliquer ce qui ne va pas et de laisser la question intacte, afin que les gens puissent voir ce qui a changé entre le problème et la solution. –

Répondre

0

Cela semble principalement correct. Un couple de notes:

  • vous avez mal orthographié "viewDidLoad". Cela peut être un effet secondaire de la saisie dans la fenêtre du navigateur. Si c'est faux dans votre code, cela n'aide certainement pas à améliorer les choses.
  • viewForZoomingInScrollView: s'attend à ce que vous renvoyiez un UIView. myImage sonne suspicieusement contrairement à un UIView. Vous devriez retourner la variable d'instance imageView. C'est ce qui se déplace.

Modifier

From the documentation:

La classe UIScrollView peut avoir un délégué qui doit adopter le protocole UIScrollViewDelegate. Pour le zoom et le panoramique pour travailler, le délégué doit implémenter à la fois viewForZoomingInScrollView: et scrollViewDidEndZooming:withView:atScale:; en outre, l'échelle de zoom maximale (maximumZoomScale) et minimale ( minimumZoomScale) doit être différente.

Il semble donc que vous ayez encore besoin d'implémenter une autre méthode de délégation.

+0

bonjour là! Merci pour votre réponse. le code que j'ai écrit était hors de ma tête mais je l'ai corrigé par copier/coller de mon projet. Ce qui se passe est que l'image est en cours de chargement mais pas de zoom du tout! – treasure

+0

salut là-bas. J'adopte la méthode déléguée UIScrollView. Cependant, dans TOUS les didacticiels, j'ai vu que personne ne mettait en œuvre scrollViewDidEndZooming: withView: atScale: etc etc. l'exemple de code fonctionne très bien. mon code fonctionne très bien tant que je n'importe pas mon image de données sqlite! (j'utilise ImageToDataTransformer) dans mon xcdatamodel. c'est vraiment bizarre! – treasure

+0

@treasure si votre code fonctionne find, sauf si vous importez l'image de sqlite, alors pourquoi diable n'avez-vous pas affiché le code qui ne fonctionne pas ?! –

Questions connexes