Comment activer l'effet zoom UIScrollView?Comment activer le zoom dans UIScrollView
Répondre
Jetez un oeil à this vidéo
Description à partir de la vidéo:
- Ajouter
UIScrollViewDelegate
délégué - Prenez un
UIScrollView
- Prenez un UIImageView qui va être ajouté sur ScrollView
- Placez la vue déroulante dans la fenêtre principale
- Connectez les délégués
- Configuration imageView
- Définir l'échelle de zoom max/min [chose ici noyau]
- Mettre en œuvre la méthode de délégué pour retourner la vue
réponse est here:
Les affichage défilement gère également le zoom et le panoramique du contenu. Lorsque l'utilisateur fait un pincement ou geste de pincement-out, la vue de défilement ajuste le décalage et l'échelle du contenu. Lorsque le geste se termine, l'objet gestion de l'affichage du contenu devrait mettre à jour devrait subviews du contenu nécessaire. (Notez que le mouvement peut se terminer et qu'un doigt peut toujours être hors service.) Pendant que le mouvement est en cours, la vue de défilement n'envoie aucun appel de suivi à la sous-vue. La classe UIScrollView peut avoir un délégué qui doit adopter le protocole UIScrollViewDelegate . Pour le zoom et le panoramique pour fonctionner, le délégué doit implémenter à la fois viewForZoomingInScrollView: et scrollViewDidEndZooming: withView: atScale :; en plus, la maximale (maximumZoomScale) et minimum ( minimumZoomScale) échelle de zoom doit être différent.
Alors:
- Vous avez besoin d'un délégué qui implémente
UIScrollViewDelegate
et est mis àdelegate
sur votreUIScrollView
exemple - Sur votre délégué vous devez mettre en œuvre une méthode:
viewForZoomingInScrollView:
(qui doit retourner le vue du contenu que vous êtes intéressé par le zoom). Vous pouvez également implémenterscrollViewDidEndZooming:withView:atScale:
en option. - Sur votre instance
UIScrollView
, vous devez régler leminimumZoomScale
etmaximumZoomScale
être différent (ils sont 1,0 par défaut).
Note: La chose intéressante à ce sujet est que si vous voulez pause zooming. Est-il suffisant de retourner nil
dans la méthode viewForZooming...
? Il casse le zoom, mais certains gestes seront foireux (pour deux doigts). Par conséquent, pour casser le zoom, vous devez régler l'échelle de zoom min et max à 1.0.
Je ne pense pas que cela fonctionne pour iOS 5.0 et Xcode 4.3+ Im recherchant la même chose ici, j'ai trouvé ceci est pour les images, mais il peut vous aider.
pas besoin de définir la taille du contenu de scrollview et la solution ci-dessus fonctionne parfaitement sur Xcode 4.3+ et iOS 5.0 aussi – Deepak
Bien que ce soit potentiellement une bonne réponse, il s'agit essentiellement d'une ** ** "lien uniquement" ** réponse. Vous devriez inclure quelques informations de vos liens afin que si l'information derrière les liens est jamais changée/perdue, la réponse a toujours du sens. Voir [ce lien] (http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-ansans-not-an-answer) –
Bonne lecture à travers ce tutoriel Ray Wenderlich:
http://www.raywenderlich.com/76436/use-uiscrollview-scroll-zoom-content-swift
Si vous suivez à travers la section 'Scrolling et Zooming une plus grande image' il obtiendra une image et vous permettre pincer et zoomer.
Si le lien se modifier, voici la principale info: Mettez ce code dans votre contrôleur de vue (cela définit la fonctionnalité principale):
override func viewDidLoad() {
super.viewDidLoad()
// 1
let image = UIImage(named: "photo1.png")!
imageView = UIImageView(image: image)
imageView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:image.size)
scrollView.addSubview(imageView)
// 2
scrollView.contentSize = image.size
// 3
var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:")
doubleTapRecognizer.numberOfTapsRequired = 2
doubleTapRecognizer.numberOfTouchesRequired = 1
scrollView.addGestureRecognizer(doubleTapRecognizer)
// 4
let scrollViewFrame = scrollView.frame
let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width
let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height
let minScale = min(scaleWidth, scaleHeight);
scrollView.minimumZoomScale = minScale;
// 5
scrollView.maximumZoomScale = 1.0
scrollView.zoomScale = minScale;
// 6
centerScrollViewContents()
}
Ajoutez ceci à la classe:
func centerScrollViewContents() {
let boundsSize = scrollView.bounds.size
var contentsFrame = imageView.frame
if contentsFrame.size.width < boundsSize.width {
contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2.0
} else {
contentsFrame.origin.x = 0.0
}
if contentsFrame.size.height < boundsSize.height {
contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2.0
} else {
contentsFrame.origin.y = 0.0
}
imageView.frame = contentsFrame
}
Et si vous voulez que le geste double tap pour être reconnu:
func scrollViewDoubleTapped(recognizer: UITapGestureRecognizer) {
// 1
let pointInView = recognizer.locationInView(imageView)
// 2
var newZoomScale = scrollView.zoomScale * 1.5
newZoomScale = min(newZoomScale, scrollView.maximumZoomScale)
// 3
let scrollViewSize = scrollView.bounds.size
let w = scrollViewSize.width/newZoomScale
let h = scrollViewSize.height/newZoomScale
let x = pointInView.x - (w/2.0)
let y = pointInView.y - (h/2.0)
let rectToZoomTo = CGRectMake(x, y, w, h);
// 4
scrollView.zoomToRect(rectToZoomTo, animated: true)
}
Si vous voulez plus de détails, lisez le tutoriel, mais cela couvre à peu près tout.
Bien que ce soit potentiellement une bonne réponse, il s'agit essentiellement d'une réponse ** "lien uniquement" **. Vous devriez inclure quelques informations de vos liens afin que si l'information derrière les liens est jamais changée/perdue, la réponse a toujours du sens. Voir [ce lien] (http://meta.stackexchange.com/questions/225370/your-answer-is-in-another-castle-when-is-ansans-not-an-answer) –
Assurez-vous de définir votre viewController en tant que délégué scrollViews et mettre en œuvre:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return imageView
}
- 1. UIScrollView zoom après rotation
- 2. UIScrollView animation zoom
- 3. Comment faire un zoom particulier sur UIScrollView?
- 4. Dos à dos UIScrollView zoom
- 5. Problème lors du zoom sur UIScrollView?
- 6. Trouver le point central d'un UIScrollView lors d'un zoom
- 7. Zoom sur plusieurs sous-vues dans un UIScrollView
- 8. Comment faire un zoom UIScrollView à la taille de UIImage?
- 9. UIScrollView comportement étrange: zoom avant, panoramique, zoom sur feuilles afficher le contenu décentré
- 10. Est-ce un bogue de zoom dans UIScrollView?
- 11. comment activer ffmpeg activer dans le serveur
- 12. Activer/désactiver le zoom sur Safari iPhone avec Javascript?
- 13. iphone: UIScrollView Paging activé sans NO ZOOM et sans prévisualisation
- 14. UIScrollView dans UIScrollView
- 15. UIScrollView ne peut pas effectuer de panoramique après un zoom
- 16. zoom sur mesure pour mettre en œuvre un UIScrollView
- 17. Zoom dans pagingScrollView
- 18. Modifier le facteur d'échelle dans UIScrollView
- 19. Comment avoir des images qui ne sont pas redimensionnées lors d'un zoom dans un UIScrollView?
- 20. Redessiner UIScrollVoir le contenu après chaque zoom
- 21. tactile a commencé dans UIScrollView
- 22. identifiant le balayage dans UIScrollview?
- 23. Comment le délégué UIScrollView est-il informé de mon UIScrollView ivar?
- 24. Comment réinitialiser le zoom de UIWebView? J'utilise déjà scalesPagesToFit = YES;
- 25. affichage de l'image dans uiscrollview
- 26. Effectuer un zoom avant pour la première fois dans UIScrollView n'est pas lisse
- 27. Zoom dérangeant dessiné UIImage dans UIView
- 28. Zoomer avec un CATiledLayer dans un UIScrollView
- 29. Comment faire un paging horizontal sans pagination verticale dans UIScrollView
- 30. Comment implémenter mon propre zoom mais toujours avoir accès au défilement de UIScrollView?
@Jigar Joshi, votre réponse n'est pas une réponse, en fait. Je ne sais pas pourquoi vous avez demandé à l'OP de l'accepter. Maintenant, je dois aller regarder la vidéo pour se souvenir de la réponse à cette question simple? –
@Yar si OP accepte + upvotes signifie que sa question a été répondue avec succès. Si vous avez une question différente à l'esprit, ce n'est pas la réponse à cette question. s'il vous plaît revenir en arrière votre mauvais downvote –
@Jigar Joshi, ne peut pas revenir sur la baisse car il est trop tard. Tu devrais changer ta réponse. Pourquoi ne pas ajouter quelques instructions sur la façon de faire ce que l'OP voulait faire, qui ne nécessite pas de regarder une vidéo? –