2017-08-23 5 views
2

J'essaie d'utiliser le UISlider pour modifier la taille d'image spécifiée dans UIImageView. La plage de valeurs du curseur est 0 ~ 100. L'idée est donc que si je déplace le curseur plus petit, une image spécifiée est plus petite et si je déplace le curseur plus grand, la taille de l'image augmente.Comment modifier la taille d'image spécifiée dans UIImageView avec UISlider dans Swift par programmation

Tel est le cas lorsque l'image devient plus petit: getting smaller image by UISlider

Et c'est le cas lorsque l'image grossit: getting bigger image by UISlider

Quelqu'un peut-il s'il vous plaît aider?

+1

ok vous pouvez le faire avec la prise d'un scrollview et imageview en elle et utiliser des méthodes de délégué de scrollview pour obtenir cette fonctionnalité –

+0

pourquoi ne pas utiliser défilante au lieu de l'image? –

+0

Vous voulez dire Utiliser la vue défilement au lieu de l'image vue? Je vais essayer. –

Répondre

1

Faire la plage de valeurs du curseur de .01 1.0 (.01 devrait fonctionner mieux que 0 .)

Contrôle-glissez de votre curseur dans votre contrôleur de vue et créez une action sur l'événement valueChanged du curseur. Appelons-le sliderChanged.

Dans la méthode d'action du curseur, modifier l'échelle de la vue de l'image:

@IBOutlet myImageView: UIImageView* 


@IBAction func sliderChanged(sender: UISlider) { 
    let scale = sender.value 
    let transform = CGAffineTransform.scale(scaleX: scale, y: scale) 
    myImageView.transform = transform 
} 

Cela devrait le faire.

+0

Wow! Génial. Ça marche! Merci, Duncan! –

0
  1. cadres de mise à jour basées sur la valeur du curseur

  2. Essayez multiplier la valeur de UISlider avec les contraintes de UIImageView

1

Vous devez ajouter Largeur et Aspect Ratio contraintes à la vue de l'image -et évidemment l'autre désiré nécessaire constraints-:

enter image description here

Dans mon exemple, ce sont les contraintes pour la vue de l'image:

enter image description here

Ensuite, vous pouvez implemnt la suivant:

class ViewController: UIViewController { 

    @IBOutlet weak var slider: UISlider! 
    @IBOutlet weak var imageViewWidth: NSLayoutConstraint! 
    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     slider.maximumValue = 100.0 
     slider.value = 0.0 
     imageViewWidth.constant = 20 
    } 

    @IBAction func sliderValueChanged(_ sender: Any) { 
     imageViewWidth.constant = CGFloat(20 + slider.value) 
    } 
} 

le imageViewWidth IBOutlet sera la contrainte largeur de votre point de vue de l'image que vous voulez redimensionner.

Sortie:

enter image description here

+0

Merci pour votre réponse. C'est ce que je voulais. Et pouvez-vous réaliser par programme? –

+0

Content de vous aider! "Et pouvez-vous réaliser par programme?"Je ne comprends pas :) avez-vous encore un problème? –

+0

Ce n'est pas réalisé par programmation, mais ça marche, Merci à vos efforts, Ahmad. –