- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在更改每个 TableViewCell 的大小:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 60
}
然后,在自定义单元格类中,我将“gradientLayer”作为子层插入到单元格的图层属性中:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
...
gradientLayer.frame = self.layer.bounds
layer.insertSublayer(gradientLayer, at: 0)
...
}
有谁知道为什么会这样/我该如何解决?
谢谢。
最佳答案
如果您使用普通的 UITableViewCell
:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100.0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath)
// ...
let gradient = CAGradientLayer()
gradient.frame = cell.contentView.frame
gradient.colors = [UIColor.blue.cgColor, UIColor.yellow.cgColor]
gradient.locations = [0.0, 1.0]
cell.contentView.layer.insertSublayer(gradient, at: 0)
// ...
return cell
}
您需要确保将渐变添加到 contentView 的层。
这会很好用。
如果您使用自定义 UITableViewCell
类:
现在,如果您使用的是自定义单元格类,则需要像这样重写layoutSubviews()
方法:
override func layoutSubviews() {
super.layoutSubviews()
gradient.frame = contentView.frame
}
这确保您的渐变框架在任何时候始终等于您的 contentView 框架。
您的自定义单元类将如下所示:
class CustomTableCell: UITableViewCell {
lazy var gradient : CAGradientLayer = {
var gradient = CAGradientLayer()
gradient.colors = [UIColor.blue.cgColor, UIColor.yellow.cgColor]
gradient.locations = [0.0, 1.0]
self.contentView.layer.insertSublayer(gradient, at: 0)
return gradient
}()
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
// ...
}
override func layoutSubviews() {
super.layoutSubviews()
// ...
gradient.frame = contentView.frame
// ...
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// ...
}
}
如果您还有其他问题,请告诉我!
关于ios - UITableViewCell 的层在 heightForRowAt IndexPath 之后没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333668/
使用此代码,我根据数组中的项目数设置单元格的自动尺寸。它可以工作,但是当我使用另一个 viewController 添加一些新项目然后返回到此时,即使数组数量增加,高度也不会更新。 我在viewDid
像往常一样,我尝试使用以下代码向某些单元格添加一些自定义高度值: func tableView(_ tableView: UITableView, heightForRowAt indexPath:
我正在开发一个电子商务应用程序,但在尝试设置特定行的高度时遇到了问题。当我选择类别时,表格会重新加载,并且根据我选择的类别,或多或少的行会通过 api。 因此,使用此设置,当我选择一个特定类别时它可以
我有一个带有自定义 UITableViewCell 的 UITableViewController。每个单元格有 2 个标签。当单元格被选中时,它会扩展到一个固定值,我通过 tableView(_ t
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { if le
我正在尝试根据下载图像的大小实现动态大小的行高。我遇到的问题是当函数 heightForRowAt 运行时图像没有被下载。实现此代码的正确方法是什么。 images是UIImage的数组,rowHei
我正在研究 UI 以使其与设计相同,我使用 heightForRowAt 将第一部分的单元格高度设置为 96px,我尝试了: override func tableView(_ tableView:
我正在使用 UITableViewController 并将 UICollectionView 放在 TableView 单元格的第二行中。问题是我如何动态获取 heightForRowAt 。 我尝
我有一个 View Controller ,它使用名为 searchCell 的自定义单元格来引入内容,我想知道如何获取标签 lblLeft 的高度并在 tableView(_ tableView:
什么时候设置改变 heightForRowAt UITableView 动画是 broken cell 是一个跳跃。如果选择最后一行并滚动到顶部,然后点击折叠行,表格会向上跳。动画坏了。 overri
通常当我想设置行高时再设置 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFl
为什么函数 heightForRowAt 总是找到包含行高的数组,该数组最初设置为 nil,即使在重新加载行后仍然为零。 override func tableView(_ tableView
我有一个整数数组,我试图将数组中所有行的 UITableViewCell 高度设置为 50,并将其余行设置为 0。使用 Swift 3,我的数组返回 [0,1,3,6] 并且我使用 for 循环遍历数
我在一个 ViewController 中有 2 个 tableview。两个表格 View 的单元格高度不同。 在第一个表格 View 中,我通过 heightForRowAt 委托(delegat
我尝试为动态内容设置单元格高度。在单元格中,我使用了两个 UILabel,但我无法从 tableView(_ tableView: UITableView, heightForRowAt indexP
我正在更改每个 TableViewCell 的大小: override func tableView(_ tableView: UITableView, heightForRowAt indexPat
我有一个带有 UITableView 的 View Controller 。使用 RxSwift 填充表数据: let observable = Observable.just(data) obser
每当我重新加载 tableView 时,heightForRowAt 都会在 cellForRowAt 之后调用。它遵循的顺序是: numberofsections -> numberOfRowsI
我对编码还很陌生,所以尝试理解这些概念。 这里我试图获取具有动态单元格高度的 UITableView 的高度。 这是我的代码部分。 override func viewWillAppear(_ ani
我的tableView设置 appTableView.estimatedRowHeight = 200 appTableView.rowHeight = UITableViewAutomaticDim
我是一名优秀的程序员,十分优秀!