2017-09-03 2 views
0

Current implementation of floating buttonComment garder UIButton flottant APRÈS scrollViewDidScroll (_ scrollView: UIScrollView) atteint le fond?

L'implémentation actuelle est la suivante. Le bouton gris est flottant sur la vue déroulante. Est-il possible de faire apparaître le bouton une fois que la vue jaune (fin de la vue défilement) est atteinte. Ensuite, gardez-le flottant sur l'écran tout en bas.

J'utilise le code suivant:

override func scrollViewDidScroll(scrollView: UIScrollView) { 

if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) { 
    //reached bottom - how to show button below yellow 
    // and keep it floating as shown above 
} 
} 

Ajout d'un code supplémentaire de ce que j'ai essayé jusqu'à présent:

@IBOutlet weak var btnScroll: UIButton! 

var startingFrame : CGRect! 
var endingFrame : CGRect! 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) && self.btnScroll.isHidden { 
     self.btnScroll.isHidden = false 
     self.btnScroll.frame = startingFrame // outside of screen somewhere in bottom 
     UIView.animate(withDuration: 1.0) { 
      self.btnScroll.frame = self.endingFrame // where it should be placed 
     } 
    } 
} 

func configureSizes() { 
    let screenSize = UIScreen.main.bounds 
    let screenWidth = screenSize.width 
    let screenHeight = screenSize.height 

    startingFrame = CGRect(x: 0, y: screenHeight+100, width: screenWidth, height: 100) 
    endingFrame = CGRect(x: 0, y: screenHeight-100, width: screenWidth, height: 100) 

} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    configureSizes() 
} 

Latest image shown like this. Button is constant and doesn't move

+1

Vous pouvez simplement cacher/réafficher le bouton dans votre instruction if que vous avez déjà calculé et commenté ? Ou est-ce autre chose que vous voulez réaliser? –

+0

@Sneak Merci d'avoir répondu! Lorsque l'utilisateur affiche le contenu de 'UIScrollView', le bouton n'apparaît pas. Il semble que ce soit sous la vue jaune. Et une fois qu'il apparaît sur l'écran, il doit persister comme indiqué dans l'image ci-dessus. En affichant la méthode ci-dessus, n'apparaîtra-t-il pas brusquement sur l'écran plutôt que d'apparaître comme si elle était en dessous de la vue jaune? Merci encore. S'il te plait peux-tu aider. –

+1

Eh bien, vous pouvez simplement utiliser une méthode d'animation UIView pour l'animer à l'écran, une fois l'animation terminée, vous pouvez simplement le garder là si vous ne voulez pas le cacher à nouveau. Voici un exemple: https://stackoverflow.com/questions/42326892/uiview-appereance-from-bottom-to-top-and-vice-versacore-animation –

Répondre

1

Si je vous comprends bien, vous voulez mettre le bouton sur la position qui apparaît sur le gif

Essayez ce code:

override func scrollViewDidScroll(scrollView: UIScrollView) { 
    if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) && self.button.isHidden { 
    self.button.isHidden = false 
    self.button.frame = startingFrame // outside of screen somewhere in bottom 
    UIView.animate(withDuration: 1.0) { 
     self.button.frame = yourFrame // where it should be placed 
    } 
    } 
} 

MISE À JOUR

ajouter ce code à cacher votre bouton avant animation montrer

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.button.isHidden = true 
    ... 
} 
+0

merci. Pourriez-vous s'il vous plaît vérifier le code mis à jour ci-dessus. La vue n'a actuellement aucune contrainte de storyboard. Toujours le résultat souhaité ne vient pas. –

+0

Qu'est-ce qui n'a pas fonctionné exactement? –

+0

le bouton gris apparaît constamment à l'écran même si aucun défilement n'est effectué. J'ai supprimé toutes les contraintes de disposition automatique du storyboard. Je vais joindre une capture d'écran de la façon dont il regarde actuellement. –