Aller au contenu


Photo

Faire défiler un grand nombre d'images


  • Please log in to reply
65 réponses à ce sujet

#1 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 12 avril 2017 - 18:53

Bonjour, 

 

J'aimerais pouvoir créer une boucle avec une scene qui me permette de faire défiler beaucoup d'images à la suite environ 40, et pouvoir revenir sur l'image précédente en utilisant deux boutons. Un peu comme sur un ordinateur et que vous souhaiteriez montrer à vos amis les photos de vos vacances stockés sur le disque de votre ordinateur. 

 

Quelle serait dans ce cas la solution la plus simple selon vous  ? 

 

Merci pour vos réponses.



#2 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 949 messages
  • LocationParis

Posté 12 avril 2017 - 19:02

Pourrais-tu tu présenter dans le forum adéquat ? Nous y parler un peu de ton niveau, cela nous permettrait alors de mieux répondre à tes questions, avec des termes plus ou moins techniques, expliquer des concepts ou non, faire des analogies avec d'autres languages, etc.

 

Sinon, veux-tu des animations entre la précédente, la courante et la photo suivante ?

Ou juste une image au milieu et deux boutons prev/next et ça remplace directement l'image ? 


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#3 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 12 avril 2017 - 20:10

Bonjour merci pour votre réponse. 

 

Je n'ai pratiquement aucune connaissance de la programmation ce serait et donc allé au plus simple ça serait deux boutons Prev/Next et ca remplace l'image précédente. 



#4 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 12 avril 2017 - 20:17

C'est marrant, c'est justement le sujet de la semaine du Mooc du professeur Kordon (lien en rouge dans ma signature) !


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#5 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 12 avril 2017 - 20:36

Dans un mot, UIPageViewController ?

#6 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 949 messages
  • LocationParis

Posté 12 avril 2017 - 20:48

Dans un mot, UIPageViewController ?

Si y'a pas d'animations, un array, un bouton previous, un bouton next, un index et une image view.


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#7 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 12 avril 2017 - 21:03

Je mettrais un lien vers mon projet du MOOC, d'ici deux ou trois jours. Le cahier de charges est exactement ce que demande JustStart, avec quelques raffinements, comme la possibilité de scroller sur les images.


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#8 rollano

rollano

    Ecabosseur en fèves

  • Membre
  • PipPipPipPip
  • 221 messages

Posté 13 avril 2017 - 09:26

C'est marrant, c'est justement le sujet de la semaine du Mooc du professeur Kordon (lien en rouge dans ma signature) !

 

je vais voir ça moi aussi :)



#9 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 13 avril 2017 - 10:55

Si y'a pas d'animations, un array, un bouton previous, un bouton next, un index et une image view.

c'est ca, compte tenu du nombre importants d'images, il faudrait que je les stocks quelque part et à chaque fois qu un utilisateur clique sur un bouton l'application fait apparaitre l'image suivante pour revenir enfin à la première image . Quel serait la meilleur façon de stocker des données pour une application ?   



#10 Larme

Larme

    Broyeur de fèves

  • Artisan chocolatier
  • PipPipPipPipPipPip
  • 1 949 messages
  • LocationParis

Posté 13 avril 2017 - 11:19

Si tes images sont dans ton bundle, le plus simple, c'est d'avoir un NSArray de NSString (le nom des images), et d'appeler [UIImage imageNamed:@"leNomDeLImage"] à chaque fois que c'est nécessaire. 

Sinon, garde les URLs des images, et gère un cache d'image pour ne pas avoir à les retélécharger à chaque fois.


Tant que vous avez des dents, mangez des pommes. Tant que vous avez de l'argent, croquez la Pomme.

#11 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 13 avril 2017 - 11:29

c'est ca, compte tenu du nombre importants d'images, il faudrait que je les stocks quelque part et à chaque fois qu un utilisateur clique sur un bouton l'application fait apparaitre l'image suivante pour revenir enfin à la première image . Quel serait la meilleur façon de stocker des données pour une application ?   

Ça dépend. C'est toujours les mêmes images ou elles peuvent changer (récupération d'un lot de graphismes à partir d'un serveur, ajout de photo manuellement, etc ..) ? 

 

Si c'est fixe, tu peux les insérer dans le projet, dossier Assets.xcassets, d'un simple drag&drop. Et les charger à la demande en donnant juste un nom. Xcode s'occupe lui-même de tout le coté "casse-pied" stockage des images et récupération du chemin.  

let image = UIImage(named: "Star_01")

C'est la méthode que j'utilise pour l'exercice du MOOC (cours en ligne) sur le Swift que je dois finir avant lundi soir. (voir copie d'écran). Je stocke une quinzaine d'images d'affiches de film dans le dossier Assets.xcassets de mon projet.

 

EDIT : Au final j'ai utilisé une autre méthode dans mon exercice. Les images sont stockées dans un répertoire du projet, où une fonction de chargement personnalisée vas les chercher (voir source plus bas).

 

Je précise que le code que j'utilise est du Swift, alors que Larme est un vieux dinosaure (avec une image de fille peinte sur le front) employant encore l'Objective-C, le langage à éviter par les débutants comme toi.

Fichier(s) joint(s)


Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#12 samir

samir

    Torréfacteur de fèves

  • Artisan chocolatier
  • PipPipPipPipPip
  • 815 messages

Posté 13 avril 2017 - 15:17

Si tes images sont dans ton bundle, le plus simple, c'est d'avoir un NSArray de NSString (le nom des images), et d'appeler [UIImage imageNamed:@"leNomDeLImage"] à chaque fois que c'est nécessaire. 

Sinon, garde les URLs des images, et gère un cache d'image pour ne pas avoir à les retélécharger à chaque fois.

imageNamed Cette méthode utilise le cache système avant d'aller charger l'image. 


"Dis-lui de passer son chemin car Leïla m'empêcherait un instant de penser à l'amour de Leïla." in Majnûn Laylâ

 


#13 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 13 avril 2017 - 15:33

Au fait, pourquoi utiliser des boutons pour faire défiler les images ? Employer des gestures (balayage vers la droite et balayage vers la gauche) est une approche moderne, plus adapté à un écran tactile que des boutons forcément petits. C'est plus esthétique en permettant d'utiliser la totalité de l'écran pour les images.


  • samir, colas_ et JustStart aiment ceci

Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#14 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 13 avril 2017 - 20:58

Au fait, pourquoi utiliser des boutons pour faire défiler les images ? Employer des gestures (balayage vers la droite et balayage vers la gauche) est une approche moderne, plus adapté à un écran tactile que des boutons forcément petits. C'est plus esthétique en permettant d'utiliser la totalité de l'écran pour les images.

 

 

Ton approche est interessante et j'ai trouvé un tuto qui pourrait m'aider dans ce sens, merci je vous tiens au courant . 



#15 Draken

Draken

    Mouleur de chocolats

  • Artisan chocolatier
  • PipPipPipPipPipPipPipPip
  • 8 599 messages
  • LocationParis

Posté 18 avril 2017 - 10:59

Le lien de mon exercice (MOOC 2017 - initiation au développement iOS), traitant de l'affichage et du défilement d'un grand nombre d'images avec des effets de zoom. C'est du Swift. Certains éléments sont imposés dans le cadre de l'exercice, mais tu devrais y trouver des choses utiles.

 

https://mooc-partage...XWJJBNazscnFESB

 

Il y a des choses supplémentaires comme l'affichage en superposition de citation de Star Wars. C'est un exemple d'utilisation des gestures et des UIView.animate().

Fichier(s) joint(s)

  • Fichier joint  egg2.jpg   85,02 Ko   3 téléchargement(s)

Garçon, servez-moi un Covfefe avec du lait de soja, sans OGM ..

Et faites régler la climatisation, il fait bien chaud, ici !

 

 

Éternel Novice !  :baby:

Tueur de poneys !  :(

 

Faire simple .. c'est compliqué !

Faire compliqué .. c'est simple !

 

Un MOOC (cours en ligne - dont je ne suis pas l'auteur) gratuit sur la programmation en Obj-C et en Swift 3, démarrant le 14 Mars 2017 :

https://www.edx.org/...onnex-progios1x

 

Des dizaines d'heures de tutoriels vidéo en français (je ne suis pas l'auteur) pour apprendre à développer en Obj-C et Swift : http://pagesperso-sy...don/5I452-2014/

 

 


#16 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 01 mai 2017 - 15:01

Merci pour vos conseils, ils me sont très utiles. 

 

Merci à Draken pour ton aide. J'ai appris beaucoup dernièrement. 

 

Exit l'image, j'ai ajouté un Label et un bouton supplémentaire qui aura pour fonction de modifier la couleur du fond d'écran et la couleur de la police du Label par la même occasion ( à la place des images) . 

 

Voila le code que j'ai : 

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var myLabel: UILabel!
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    @IBAction func colorLabel(_ sender: Any) {
        
        
        
        if  myLabel.text == "A" {
            view.backgroundColor = UIColor.blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
        }
        
        if myLabel.text == "D"{
            view.backgroundColor = UIColor.red
        }
    }
    
    
    @IBAction func changeLabel (_ sender: Any) {
        myLabel.text = PopLabel()
        self.view.backgroundColor = UIColor.white
        myLabel.textColor = UIColor(red: 0 , green:0, blue: 0, alpha: 1.0)
        
        
    }
    
    func PopLabel() -> String {
        let label = ["A", "C", "Z","Q", "B", "W", "X","J", "H", "L", "R","N","D", "G", "U","S"]
        return label[Int(arc4random_uniform(UInt32(label.count)))]
        
    }
    
}

Je Souhaite lorsque j'active le bouton colorLabel attribuer au valeurs ("A", "C", "Z","Q" etc ..)  une couleur de fond d'écran Bleu

attribuer aux valeurs ("B", "W", "X","J", etc..)  une couleur de fond d'écran Vert.

attribuer aux valeurs ("H", "L", "R","N" etc ...)  une couleur de fond d'écran Rouge.

attribuer aux valeurs ("D", "G", "U","S" etc ...)  une couleur de fond d'écran Rouge.

 

Comment je peux obtenir ce résultat sans devoir recopier pour chaque caracter : 

if  myLabel.text == "A" {
            view.backgroundColor = UIColor.blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)

if  myLabel.text == "C" {
            view.backgroundColor = UIColor.blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)

if  myLabel.text == "Z" {
            view.backgroundColor = UIColor.blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
ETC.. 
 
En les regroupant dans un ensemble par exemple .
 
Merci pour vos conseils ! 

Modifié par Joanna Carter, 01 mai 2017 - 15:33 .
Addition de balises code


#17 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 01 mai 2017 - 15:31

Quelque chose comme ci :

  switch myLabel.text
  {
    case "B", "W", "X", "J":
            view.backgroundColor = .green
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    case "H", "L", "R", "N":
            view.backgroundColor = .red
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    case "D", "G", "U", "S":
            view.backgroundColor = .blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    default:
      break
  }

Et, s'il te plaît, utiliser les balises code la prochaine fois  ::)



#18 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 01 mai 2017 - 15:51

Super merci mais impossible de lancer le programme  : raison : "Expression pattern of type "String" cannot match value of type 'String?'"

 

Est-ce que tu sais comment changer ça ? 

 

Merci 



#19 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 887 messages
  • LocationPlestin-les-Grèves (22)

Posté 01 mai 2017 - 19:02

  guard let text = myLabel.text else
  {
    return
  }

  switch text
  {
    case "B", "W", "X", "J":
            view.backgroundColor = .green
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    case "H", "L", "R", "N":
            view.backgroundColor = .red
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    case "D", "G", "U", "S":
            view.backgroundColor = .blue
            myLabel.font = myLabel.font.withSize(120)
            myLabel.textColor = UIColor(red: 200 , green:200, blue: 200, alpha: 1.0)
    default:
      break
  }


#20 JustStart

JustStart

    Eleveur de cacaoyers

  • Membre
  • PipPip
  • 32 messages

Posté 01 mai 2017 - 22:15

Tu m'enlèves une sacrée épine du pied.

 

Je vous parlerai de mon application quand j'aurai terminé.

 

Merci ! 






0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)