- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我试图通过在 tableView 函数中调用 startAnimation() 来设置 tableViewCell 行的高度:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! TableViewCell
tableView.rowHeight = 44.0
startAnimation(tableView)
return cell
}
//MARK: Animation function
func startAnimation(tableView: UITableView) {
UIView.animateWithDuration(0.7, delay: 1.0, options: .CurveEaseOut, animations: {
tableView.rowHeight = 88.0
}, completion: { finished in
print("Row heights changed!")
})
}
结果:行高确实发生了变化,但没有任何动画发生。我不明白为什么动画不起作用。我是否应该在某处定义一些开始和结束状态?
最佳答案
不要那样改变高度。相反,当您知道要更改单元格的高度时,请调用(在任何函数中):
self.tableView.beginUpdates()
self.tableView.endUpdates()
这些调用通知 tableView 检查高度变化。然后实现委托(delegate) override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat
,并为每个单元格提供适当的高度。高度的变化将自动动画化。对于没有明确高度的项目,您可以返回 UITableViewAutomaticDimension
。
不过,我不建议在 cellForRowAtIndexPath
中执行此类操作,但建议在响应点击 didSelectRowAtIndexPath
的操作中执行此类操作。在我的一门课中,我会:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if indexPath == self.selectedIndexPath {
self.selectedIndexPath = nil
}else{
self.selectedIndexPath = indexPath
}
}
internal var selectedIndexPath: NSIndexPath? {
didSet{
//(own internal logic removed)
//these magical lines tell the tableview something's up, and it checks cell heights and animates changes
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath == self.selectedIndexPath {
let size = //your custom size
return size
}else{
return UITableViewAutomaticDimension
}
}
关于Swift:如何为 UITableView 的 rowHeight 设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37626282/
问题是: 如果您有 20 个单元格并设置 tableView.rowHeight = 60,并且在 tableView 加载其数据后,其 contentSize 为 44*20=880 不是 20*6
我想实现与 Reminders (iOS 5) 相同的效果。表格行高会随着 TextView 高度的变化而动态变化。 假设我在 UITableViewCell 中使用 UITextView。我将在单元
我需要调整我的 UITableViewCell 尺寸。我通过更改 rowHeight.dimension 来完成它,但它不起作用。 class SobreViewController: UITable
我在为我的 tableview 设置 rowHeight 更改动画时遇到问题。动画在 iPad 3(第一代视网膜)上需要很长时间(大约 3 秒)。但是,如果我在 tableview 靠近列表的中到底部
我有一个 UITableViewCell 子类,它有两个可变高度的标签。 AFAIK,自动布局约束是正确的。第一次在表格中渲染单元格时它是正确的,但任何后续渲染都会被吹得太高。即使在父 View Co
我正在使用 SlickGrid控制如grouped example所示如果我将 rowHeight 选项设置为 200,那么网格也会使 slick-group 行变大。 这附近有什么吗?我试图手动调整
我想要一个单元格,其中 rowHeight 等于 UITableView 的高度。添加我添加新单元格,然后将 rowHeight 除以我拥有的单元格总数。 在我的 viewDidLoad 中设置默认高
我在我的元素中使用 aggrid,我想在我的行中实现一个自动调整大小的功能。意味着目前在我的每个单元格中都会有多个 div 元素。因此,如果我固定行的高度,如果我添加第三个 div,它就会隐藏或溢出。
我想在 JTable 中放置一个比给定的单元格宽度更长的字符串。如何动态设置 rowHeight 以便读取整个字符串?这是一个例子: import javax.swing.*; public clas
我正在 iOS 8 上构建基本表格 View 。我观看了关于自动调整单元格主题的 WWDC '14 视频,并试图重现该概念,但遇到了一些问题。在 viewDidLoad 上:我正在调用: //esti
我用来创建矩形的代码(至少在 iOS7 之前)是 CGRect rect = [cTableView frame]; rect.origin.y += [cTableView rowHeight];
我正在尝试使用以下代码将 tableView 中每一行的高度设置为相应单元格的高度: override func tableView(tableView: UITableView!, heightFo
我有一个很长的 Excel 数据库,它运行一个我最初没有创建的 VBA 宏(因此我不知道它是如何工作的)。问题是由于某种原因,VBA 宏缩小了某些行的高度,这使得其中包含的文本并不总是 100% 可见
我正在使用 XCode 6.3 在 iOS 8 中构建不同字体的 TableView。首先,根据我正在阅读的书,它说鉴于 iOS8,不需要对表格行的高度进行任何操作会为您处理好这一点,所以一旦我掌握了
我有一个带有动态单元格和不同部分的 UITableViewController。一旦 Controller 被调用,rowHeigths 就完美了。然后我移动到另一个 Controller (在另一个
我从 ui-grid 得到了这种奇怪的行为,如果我将 rowHeight 设置为自动,同一行中的每个单元格将具有不同的高度。每行中的一个单元格将包含多行数据,但显然 ui-grid 会因此而窒息。 (
我有一个包含五个静态单元格的 UITableView。我需要一个单元格的单元格高度自动调整到它的内容,这是一个 UILabel。 有什么办法可以用.. tableView.estimatedRowHe
有没有办法在 swift 中获取 UITableView 中每一行的行高?请帮忙。提前致谢。 最佳答案 swift 4: var height: CGFloat = 0 for cell in tab
我试图通过在 tableView 函数中调用 startAnimation() 来设置 tableViewCell 行的高度: func tableView(tableView: UITableVie
我有 UITableViewCell,其中多个组件充当行,由 UIView 中的 UILabel、UIView 和 UIStackView 的混合元素组成。 单元格内的每个组件都有高度限制。我希望通过
我是一名优秀的程序员,十分优秀!