我想更改viewTable中特定单元格中嵌套视图的Y位置。
比如说

let condition = myarray[indexPath.row]
if condition != nil  {
    cell.myView.frame.origin.y += 15
}

问题是,由于每次滚动时它都在dequeueReusableCell下,所以它将执行代码并在前一个y位置上再添加15。
对每个单元格执行一次此操作的最佳正确方法是什么?

最佳答案

声明属性defaultViewY

var defaultViewY : CGFloat = 0.0

viewDidLoad中获取视图的默认y位置
func viewDidLoad() {
    super.viewDidLoad()
    defaultViewY = // add code to get the default y-position or use a literal constant
}

cellForRow中,如果条件为false,不要使用+=运算符并添加else子句来重置y位置
let condition = myarray[indexPath.row]
if condition != nil  {
    cell.myView.frame.origin.y = defaultViewY + 15.0
} else {
    cell.myView.frame.origin.y = defaultViewY
}

08-19 13:49