2017-09-03 72 views
0

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://stackoverflow.com/questions/42326892/uiview-appereance-from-bottom-to-top-and-vice-versacore-animation – 2017-09-03 19:37:59

回答

1

如果我理解你的權利,你想把按鈕放在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自動佈局約束。我將附上它目前的樣子的截圖。 –