我需要我的表视图在滚动时淡出其顶部和底部单元格。我尝试了一些涉及渐变和遮罩的解决方案,但没有工作,从透明到白色的渐变都有黑色。有没有人有办法在swift中实现这一目标?
答案 0 :(得分:1)
您可以使用UITableViewDelegate
协议中定义的某些方法来达到预期效果。首先,您需要知道单元格主子视图contentView
添加所有其他子视图是它的子视图。您需要做的是在contentView
方法中将cellForRowAtIndexPath:indexPath:
alpha设置为0。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = "Fade Cell"
cell.contentView.alpha = 0 // Here we set the alpha of the content view
return cell
}
如果您现在运行您的应用程序,您将拥有纯白色单元格。我们现在唯一需要知道的是何时显示单元格,因此我们可以显示contentView
。第二种UITableViewDelegate
协议方法现在派上用场了。
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
UIView.animateWithDuration(0.4) {
cell.contentView.alpha = 1
}
}
当准备显示单元格时调用此委托方法,并且它是将contentView
alpha属性设置为1的理想位置。