我想通过更改其Top约束的常量来向下滚动视图。该视图位于自定义UITableViewCell
内,我将约束从.xib
与IBOutlet
相关联。
从那里,在我的控制器中,当我们滚动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]之间滚动它:
编辑:
然后,当我向下滚动,再向上滚动时,细胞会出列:
-44