Utiliser UIScrollView sur une image

Bonjour,

Je cherche à  pouvoir zoom et scroller sur une image affichée sur une partie de l'écran.

J'essaie d'utiliser UIScrollView... Mais cela ne marche pas



Sauriez vous ce que je fais de mal ?



D'avance merci



Voila a quoi ressemble mon code dans viewDidLoad :



UIImage *img = [UIImageimageWithContentsOfFile: NSBundlemainBundle] pathForResource:@"monfichierjpg"ofType:@"jpg";



CGRect cropRect = CGRectMake(0, 0, 530, 776);

CGImageRef imageRef = CGImageCreateWithImageInRect(, cropRect);



myImage = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 530, 776)];

myImage.image = [UIImage imageWithCGImage:imageRef];

CGImageRelease(imageRef);



resizableView = [[UIScrollView alloc] initWithFrame:CGRectMake(120,80,530,776)];

[resizableView setMaximumZoomScale:4.0];

[resizableView setMinimumZoomScale:0.5];

[resizableView setDelegate:self];

[resizableView addSubview:myImage];

[self.view addSubview:resizableView];
Mots clés:

Réponses

  • 'Totov' a écrit:


    J'essaie d'utiliser UIScrollView... Mais cela ne marche pas




    ??
  • 'jpimbert' a écrit:


    ??


    J'ai dit une bêtise ?
  • AliGatorAliGator Membre, Modérateur
    août 2012 modifié #4
  • 'Totov' a écrit:


    J'ai dit une bêtise ?


    Cela fait une devinette partout.

    C'est une tentative de ma part de te faire comprendre que "ne marche pas" est un bon moyen de ne pas obtenir de réponse. Tu nous demandes gentiment de deviner "ce qui ne marche pas".

    De deux choses :
    1. soit tu as fait des recherches pour comprendre pourquoi "ça ne marche pas", et je te recommande de partager cela avec nous, de façon à  arriver à  résoudre collectivement ton problème,
    2. soit tu n'as pas fait de recherches, je te recommande alors de te ramener au premier cas avant de poster
  • Merci beaucoup pour votre aide. c'est sympa... je débute en objective-c et j'ai un peu du mal à  tout mettre dans l'ordre...



    Merci également pour le manuel apple... je viens de passer quelques heures dessus... cela m'a beaucoup plus aidé que l'aide sur la classe UIScrollView image/smile.png' class='bbc_emoticon' alt=':)' />



    Je me rends compte que je ne code probablement pas au bon endroit....

    Je codais directement mon UIScrollView dans le viewDidLoad de ViewController.m du coup c'est toute la classe qui était concernée ! (ce qui risque d'être gênant si je compte faire plusieurs instances)

    je suppose que je devrais plutôt mettre mon code ailleurs... dans le main ? en créant une nouvelle classe qui hérite de ViewController ?



    Sauriez vous où je pourrais trouver quelques exemples de programmation de ViewControler ?

    Il y a bien AboutViewControllers mais ils ne précisent pas où se mets le code, ni a quoi il ressemble...
  • Hello,



    Cela n'a rien à  voir avec la question, mais tu peux remplacer
    <br />
    UIImage *img = [UIImageimageWithContentsOfFile: [[NSBundlemainBundle] pathForResource:@&quot;monfichierjpg&quot;ofType:@&quot;jpg&quot;]];<br />
    


    par
    <br />
    UIImage *img = [UIImage imageNamed:@&quot;monfichierjpg.jpg&quot;];<br />
    




    Tu peux également initialiser ton UIImageView avec une UIImage mais ton implémentation permet de cropper l'image auparavant.
  • iSofTomiSofTom Membre
    septembre 2012 modifié #8
    'GranDav' a écrit:


    Hello,



    Cela n'a rien à  voir avec la question, mais tu peux remplacer
    <br />
    UIImage *img = [UIImageimageWithContentsOfFile: [[NSBundlemainBundle] pathForResource:@&quot;monfichierjpg&quot;ofType:@&quot;jpg&quot;]];<br />
    


    par
    <br />
    UIImage *img = [UIImage imageNamed:@&quot;monfichierjpg.jpg&quot;];<br />
    




    Tu peux également initialiser ton UIImageView avec une UIImage mais ton implémentation permet de cropper l'image auparavant.




    Je ne suis pas forcément d'accord avec toi David,

    niveau optimisation ça peut être intéressent d'utiliser imageWithContentOfFile plutot que imageNamed puisque ce dernier va mettre l'image en cache, même si ton objet UIImage est détruit, mais pas le premier.
  • [font=arial, helvetica, sans-serif]Je suis désolé de vous embêter (encore)[/font]

    [font=arial, helvetica, sans-serif]Mais je tourne en rond image/sad.png' class='bbc_emoticon' alt=':(' />[/font]



    [font=arial,helvetica,sans-serif]Dans le ViewDidLoad de ViewConroler.m j'ai mis :[/font]





    // Création de la ScrollView


    resizableView = [[UIScrollView alloc] initWithFrame:CGRectMake(100,60,self.view.frame.size.width-100,self.view.frame.size.height-60)];


    resizableView.contentSize = CGSizeMake(5300, 7760);


    [resizableView setMaximumZoomScale:4.0];


    [resizableView setMinimumZoomScale:0.5];


    [resizableView setDelegate:self];


    [resizableView addSubview:myImage];


    [self.view addSubview:resizableView];




    [font=arial, helvetica, sans-serif]Il semble que la ligne [resizableView setDelegate:self]; pose un soucis : j'ai le message Sending *const__strong' to parameter of incompatible type 'id<UIScrollViewDelegate>'
    [/font]



    [font=arial, helvetica, sans-serif]Vous savez quel est le problème ?
    [/font]

    [font=arial, helvetica, sans-serif]Je ne comprends pas le soucis... si je mets la ligne en commentaire, tout se lance correctement et j'arrive bien à  scroller sur mon image... mais je voudrais maintenant pouvoir [/font][font="arial, helvetica, sans-serif"]zoomer.[/font]



    [font=arial, helvetica, sans-serif]d'avance merci[/font]
  • AliGatorAliGator Membre, Modérateur
    Bah ta classe a bien été déclarée dans ton @interface comme étant conforme au protocole UIScrollViewDelegate au moins ?
  • Et surtout est-ce que tu as bien implémenté la méthode
    - ([url="file:///Users/thomas/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiOS6.0.iOSLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/c_ref/UIView"]UIView[/url] *)viewForZoomingInScrollView:([url="file:///Users/thomas/Library/Developer/Shared/Documentation/DocSets/com.apple.adc.documentation.AppleiOS6.0.iOSLibrary.docset/Contents/Resources/Documents/documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html#//apple_ref/doc/c_ref/UIScrollView"]UIScrollView[/url] *)scrollView
    
    ?
Connectez-vous ou Inscrivez-vous pour répondre.