如何保持UIButton在scrollViewDidScroll(_ scrollView:UIScrollView)到达底部后浮动?

问题描述:

Current implementation of floating button如何保持UIButton在scrollViewDidScroll(_ scrollView:UIScrollView)到达底部后浮动?

以下是当前的实施。灰色按钮浮动在滚动视图上。是否有一种方法可以在黄色视图(滚动视图的结束)到达时显示按钮。然后保持它在最底部的屏幕上浮动。

我用下面的代码:

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 
} 
} 

添加的什么我试过到目前为止附加代码:

@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

你可以只隐藏/在你的if语句取消隐藏按钮,你已经计算和评价?还是你想达到的其他目标? – 2017-09-03 19:31:12

+0

@Sneak谢谢你的回应!当用户查看“UIScrollView”内容时,该按钮不会出现。看起来好像它躺在黄色的景色下。一旦它出现在屏幕上,它需要保持上图所示的状态。通过隐藏上述方法,它不会突然出现在屏幕上,而不会出现在黄色视图下方吗?再次感谢你。能否请你帮忙。 –

+1

那么,你可以简单地使用一个UIView动画方法将它动画到屏幕上,一旦动画完成,你可以保留它,如果你不想再隐藏它。这里是一个例子:https://*.com/questions/42326892/uiview-appereance-from-bottom-to-top-and-vice-versacore-animation – 2017-09-03 19:37:59

如果我理解你的权利,你想把按钮放在gif上显示的位置

试试这个代码:

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 
    } 
    } 
} 

UPDATE

添加该代码隐藏按钮之前的动画将显示它

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

谢谢。你能否检查上面更新的代码。该视图目前没有任何故事板约束。仍然期望的结果不会出现。 –

+0

什么都不起作用? –

+0

即使没有执行任何滚动操作,灰色按钮也会不断出现在屏幕上。我已经删除了所有的Storyboard自动布局约束。我将附上它目前的样子的截图。 –