2017-10-13 12 views
0

Essayer de faire l'échelle UIImageView lorsque le scrollview rebondit.Rebond de UIScrollview avec zoom fixe

L'idée a été volée de cette Dribbble: https://dribbble.com/shots/3341878-Product-Page

Comme vous pouvez le voir, l'image est mise à l'échelle like'a lorsque le scrollview rebondit vers le bas.

Dans mon application, j'ai UIImageView à l'intérieur de l'UIScrollview, je ne peux pas comprendre comment réparer le haut de l'UIImageView tandis que le UIScrolvview rebondit.

Voici ce que je veux faire:

enter image description here

+0

Vérifiez l'adresse suivante: https://stackoverflow.com/questions/33481928/imageview-scaling-when-scrolling -vers le bas . Peut être si cela aide dans votre scénario. – Amit

Répondre

1

Appliquez une transformation d'échelle à votre imageView en fonction du décalage de votre scrollview. Quelque chose le long de ces lignes:

extension ViewController: UIScrollViewDelegate { 
    public func scrollViewDidScroll(_ scrollView: UIScrollView) { 
     let offset = scrollView.contentOffset 

     if offset.y < 0.0 { 
      var transform = CATransform3DTranslate(CATransform3DIdentity, 0, offset.y, 0) 
      let scaleFactor = 1 + (-1 * offset.y/(imageViewHeightConstraint.constant/2)) 
     transform = CATransform3DScale(transform, scaleFactor, scaleFactor, 1) 
      imageView.layer.transform = transform 
     } else { 
      imageView.layer.transform = CATransform3DIdentity 
     } 
    } 
} 

De cette façon, vous n'avez pas besoin de « réparer » en haut, l'échelle imageView sera tout simplement que le contenu de décalage diminue lorsque rebondir. Tout ce dont vous avez besoin, c'est que votre imageView ait une contrainte supérieure (plus un début, un arrière) et une hauteur.

+0

Merci beaucoup, ça marche =) – KaronatoR

0

Vous pouvez « tricher » en plaçant l'image au-dessus du scrollview et définir sa hauteur dans la méthode didScroll sur vous scrollviewdelegate (lire le contenu offset et déterminer hauteur de l'image). Si vous réglez l'image sur l'aspect, cela aura l'effet que vous voulez.

+0

Pensez-vous que cela fonctionnera sans délais? – KaronatoR

+0

Oui, nous l'avons fait aussi bien et cela fonctionne comme un charme – Simon