comment faire pour gérer la taille d'une image ?

Bonjour et Meilleurs vœux à tous
Je veux afficher dans un ViewController (swift MAC OsX) une image en grand format de façon à pouvoir contrôler certains endroits de celle-ci.
J'ai du maj à voir comment faire
en fait dans mon view controller ces serait une sorte de loupe avec scrollHorizontal et vertical
J'espère que je me suis bien fait comprendre.

A+ :)

Réponses

  • CéroceCéroce Membre, Modérateur
    12 janv. modifié #2
    • Ajoute une NSImageView, sélectionne-là puis menu Editor > Embbed in > Scroll View.
    • Tire ensuite une outlet sur la NSImageView.
    • Le code devra adapter la frame de la NSImageView en fonction de la taille de l'image et du zoom.

    Regarde la doc de NSScrollView pour plus d'informations.

  • PatyomPatyom Membre

    Attends, je vais m'expliquer un peu mieux.
    Ce que tu me donnes c'est OK,
    Mon idée
    J'affiche dans mon ViewController une imageview, quand je clique dedans je veux afficher un autre view controller avec bien entendu une imagerie dans laquelle l'image en question est affichée deux fois plus grande et je fais apparaitre les barres de scroll H et V.
    voilà, c'est un peu plus clair non!

  • CéroceCéroce Membre, Modérateur

    C'est plus précis, mais ça ne change pas grand chose au problème.
    Le premier VC va devoir passer la NSImage au deuxième, qui comportera une NSImageView à l'intérieur d'une NSScrollView. Il faudra que la frame de la NSImageView soit le double de la taille de l'image.

  • PatyomPatyom Membre

    J'ai écrit ceci

    class ViewController: NSViewController {

    @IBOutlet weak var scrollView: NSScrollView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
    
        let imageView = NSImageView()
        var imageRect: NSRect
    
        // Initialize below the imageView image with appropriate content (to adapt)
        imageView.image = NSImage.init(named:"Meschers02New")
    
        imageRect = NSMakeRect(0.0, 0.0, imageView.image!.size.width, imageView.image!.size.height)
        imageView.setFrameSize(CGSize(width: imageRect.width, height: imageRect.height))
    
        imageView.imageScaling = NSImageScaling.scaleNone
    
        scrollView.documentView = imageView
        scrollView.hasVerticalScroller = true
        scrollView.hasHorizontalScroller = true
    }
    
    override var representedObject: Any? {
        didSet {
        // Update the view, if already loaded.
        }
    }
    

    }
    ça fonctionne, à l'aide des trolls j'arrive à déplacer mon image
    Maintenant je n'arrive pas à changer la taille de mon image

  • PyrohPyroh Membre
    13 janv. modifié #6

    Préambule: En 2018 @Pyroh fera des posts RTFM aussi souvent que nécessaire.

    NSScrollView est super bien documentée donc autant prendre le pli et faire de la consultation de la documentation un automatisme. D'ailleurs @Céroce te l'a dit.

    Si on prend simplement la documentation de NSScrollView on tombe sur la propriété allowsMagnification qui permet justement de zoomer dans une scroll view. Une autre propriété est aussi très utile: magnification je t'invite à y regarder.

    N'hésite pas à passer ta souris sur le nom des classe et propriétés il y a des liens directs vers la doc mais le thème CSS ne met pas en évidence les codes qui sont aussi les liens.

  • PatyomPatyom Membre

    ok, je vais me plonger dans la doc

    thanks

  • PatyomPatyom Membre

    Pas simple, pas trop d'exemples MAC OSX sur le sujet pour m'aiguiller.
    en plus l'anglais n'est pas trop mon fort.
    Je continue mais c'est pénible.

  • PatyomPatyom Membre

    C'est le fait que ce soit en anglais qui est pénible !

  • PyrohPyroh Membre

    @Patyom a dit :
    C'est le fait que ce soit en anglais qui est pénible !

    Ouais mais coder de manière un tant soit peu sérieuse sans maitriser l'anglais, de nos jours, c'est impossible.
    Les docs sont en anglais c'est comme ça. Et il vaut mieux éviter de compter sur la littérature francophone elle est souvent obsolète et mal foutue. Je ne parle pas non plus de certains MOOCs qui sont une véritable honte et qui t'apprendrons par exemple à construire tes interfaces en code...

  • Joanna CarterJoanna Carter Membre, Modérateur

    @Pyroh a dit :

    Ouais mais coder de manière un tant soit peu sérieuse sans maitriser l'anglais, de nos jours, c'est impossible.
    Les docs sont en anglais c'est comme ça. Et il vaut mieux éviter de compter sur la littérature francophone elle est souvent obsolète et mal foutue. Je ne parle pas non plus de certains MOOCs qui sont une véritable honte et qui t'apprendrons par exemple à construire tes interfaces en code...

    :)

Connectez-vous ou Inscrivez-vous pour répondre.