如何通过修改其约束的Top常量来移动自定义单元格内的视图?

时间:2015-03-21 13:19:33

标签: ios uitableview swift uiscrollview constraints

我想通过更改其Top约束的常量来向下滚动视图。该视图位于自定义UITableViewCell内,我将约束从.xibIBOutlet相关联。

从那里,在我的控制器中,当我们滚动tableview时,单元格中的视图应该关闭contentOffset:我将contentOffset除以单元格的高度以选择带有索引的单元格,我尝试在此单元格中更改视图的约束。 (我尝试了行+ 1,或行+ 2来查看更改,但没有任何反应)。

问题是:如果我滚动,没有任何反应,单元格中的视图不会滚动。
如果我向下滚动并返回,则视图已滚动到单元格的底部。也许问题是当细胞可见时#34;?我试过layoutIfNeeded()以防万一,但它什么也没做。

func scrollViewDidScroll(p_scrollView: UIScrollView) {
    if p_scrollView == tableView {
        let row = Int(CGFloat(p_scrollView.contentOffset.y) / CGFloat(heightCell))
        let ratioScroll = CGFloat(p_scrollView.contentOffset.y) / CGFloat(heightCell)
        //row 5, scroll 5.32 -> 5.32 - 5 = 0.32 -> (0.32 * 44) - 44 => value between [-44, 0]
        let decimalOnly = ratioScroll - CGFloat(row)
        println("decimalOnly : \(decimalOnly)") //betwwen [0,1]

        let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row+3, inSection: 0)) as MyCell
        let scrollY : CGFloat = (CGFloat(decimalOnly) * CGFloat(heightCell)) - CGFloat(heightCell)

        cell.constraintTopViewAbove = NSLayoutConstraint(item: cell.viewAbove, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: cell, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: scrollY)
        //cell.layoutIfNeeded()
        //cell.setNeedsDisplay()



//my custom cell :        
class MyCell : UITableViewCell {

@IBOutlet weak var viewAbove: UIView!
@IBOutlet weak var constraintTopViewAbove: NSLayoutConstraint!

我的自定义单元格的.xib,垂直间距约束为IBOutlet:在开头,视图(" viewAbove"绿色矩形)位于{{ 1}}隐藏它。然后,我想在[-44,0]之间滚动它:

enter image description here


编辑:

enter image description here

然后,当我向下滚动,再向上滚动时,细胞会出列:

enter image description here

-44

0 个答案:

没有答案