2017-01-02 100 views
0

粘頭,我知道的是,粘頭是不是要問上建議一個新的東西,但仍...與滾動視圖和stackview

我想創建一個棘手的頭(的UIImageView)和滾動部分(帶有UIStackView的UIScrollView)

Im使用的scrollViewDidScroll方法。唯一的問題是,當我向上滾動視圖時,我不僅降低了標題視圖的高度,而且還滾動了堆棧視圖的內容。因此,當我向上滾動時,您仍然可以看到標題視圖,但滾動視圖的頂部內容通過滾動消失。

這可以通過某種方式解決,當我向上滾動時,堆棧視圖的內容是滾動而不是消失?並開始消失時,標題視圖消失?

謝謝

+0

你有沒有想過這個? – shoe

回答

0

要做到這一點是使用一個表視圖的最簡單方法。您的粘性標題是表格的第一個部分標題,而滾動部分是第二部分。

如果你不能使用表格,無論出於何種原因,那麼你必須弄清楚滾動視圖的內容偏移量。當contentOffset.y增長(但不超過您的標題的高度)時,將其重置爲0,並相應地降低標題的高度。在標題的高度爲0之後,請停止與contentOffset混合 - 直到你回來,並且contentOffset.y想要消極。

P.S.第二種解決方案要求您在滾動視圖中啓用彈跳。否則,標題將被隱藏,但不會再顯示(除非您重置控制器)

L.E.我的第二個解決方案的一些(舊)代碼:

let headerHeight = self.headerView.height 
self.scrollHandler = { 
    var offset = self.detailsTable.contentOffset 

    self.headerTopConstraint.constant -= offset.y 
    if self.headerTopConstraint.constant < -headerHeight { 
     self.headerTopConstraint.constant = -headerHeight 

     let size = self.detailsTable.contentSize 
     if offset.y + self.detailsTable.frame.height > size.height { 
      offset.y = size.height - self.detailsTable.frame.height 
     } 

     self.detailsTable.contentOffset = offset 
    } 
    else { 
     if self.headerTopConstraint.constant > 0 { 
      self.headerTopConstraint.constant = 0 
     } 
     self.detailsTable.contentOffset = CGPointZero 
    } 
} 

請注意,我的代碼向上移動標題以隱藏它。據我瞭解,你只需要改變標題的高度(以相同的量向上移動)。

+0

但是,當我在scrollViewDidScroll中設置scrollView.contentOffset.y時,它會再次調用並將偏移重置爲0,我不能再次向右滾動? – kalafun

+0

@kalafun我在類似的情況下添加了一段代碼。 – DarkByte

+0

顯然,您的滾動視圖是我的案例中的一張表格(detailsTable)。 – DarkByte