2017-08-07 1 views
1

Dans mon application, je travaillais sur le fait d'appuyer sur une image et d'agrandir l'image pour afficher l'image en taille réelle.Problème d'obtention de la hauteur d'image correcte en fonction de différents types d'image

c'est idéalement ce que je veux travailler: (ne me laisse pas ajouter de la vidéo ici est donc ici le lien vers elle) https://media.giphy.com/media/F7wCO7miVMG6k/source.mp4

Cependant, je ne suis en mesure d'afficher des images sur la taille correcte si leur hauteur n'est pas si grande. Short height Short height full screen

Si j'ai une image carrée, ou une image trop grande, l'image apparaît comme suit: square image square image full

Voici le code qui gère la façon dont l'image est affichée:

Note: J'ai ajouté un tas d'instructions d'impression pour voir exactement ce qui se passait avec le cadre

Je remarque aussi que mon problème se produit dans la ligne suivante:

let height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.width 

En utilisant keyWindow.frame.width il affiche l'image avec courte hauteur correctement, mais l'autre hauteur de photos est incorrect.

Si je change la ligne:

let height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.height 

il affiche correctement les images carrées, mais pas ceux avec faible hauteur.

Comment puis-je détecter la bonne hauteur de l'image et l'afficher correctement en fonction de sa hauteur?

Edit: image carrée journal Square image log

Image grand journal Wide image log

Edit 2:nouveaux journaux

image carrée journal Square image

Image grand journal Wide image

Répondre

1

vous pouvez essayer comme l'ajout d'une condition if pour vérifier l'image est portrait ou paysage et hauteur fixés en conséquence,

let image = startingImageView.image 
let w = image.size.width 
let h = image.size.height 
print("image width: ", w) 
print("image height: ", h) 
var height = 0 
if (w > h) { //landscape 
    height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.width 
} else { //portrait 
    height = (self.startingFrame!.height/self.startingFrame!.width) * keyWindow.frame.height 
} 
+0

Merci pour le commentaire.L'application est uniquement en mode portrait, mais les images ne sont toujours pas affichées correctement en fonction de leur hauteur. –

+0

avez-vous essayé en vérifiant le rapport largeur-hauteur comme ci-dessus? – Akhilrajtr

+0

Oui j'ai essayé avec le code ci-dessus, mais les images sont toujours affichées incorrectement –