将 UIScrollView 添加到表格单元格似乎会影响表格滚动性能

     2023-03-11     170

关键词:

【中文标题】将 UIScrollView 添加到表格单元格似乎会影响表格滚动性能【英文标题】:Adding UIScrollView to table cell seems to affect table scroll performance 【发布时间】:2013-08-29 19:01:06 【问题描述】:

我不确定这是糟糕的实现还是糟糕的决定,但我正在尝试在我的 UITableView 中的每个单元格内添加一个水平 UIScrollView。我将它作为子视图添加到单元格的 contentView,然后调用 cell.clipsToBounds = true (仅供参考,我正在使用 RubyMotion)。当我点击单元格上的按钮时,我使用beginUpdates/endUpdates 触发heightForRowAtIndexPath 以扩展单元格的高度并显示“隐藏”滚动视图。

无论如何,因为这样做我的表的滚动有点迟钝。我在下面添加了我的代码,想知道是否可以改进我的实现以修复滚动性能。任何帮助/见解都是有帮助的(尽管如果可能的话,我想尝试保留滚动视图)。

my_array = [
  ["Hi", "there", "one"],
  ["Hi", "there", "two"],
  ["Hi", "there", "three"],
  ["Hi", "there", "four"],
]

scroll_frame = CGRectMake(
    0, rowHeight - 1, hidden_width, 51
  )
hidden_scroll = UIScrollView.alloc.initWithFrame(scroll_frame)
hidden_scroll.alwaysBounceHorizontal = true
hidden_scroll.bounces = true
hidden_scroll.contentSize = CGSizeMake(hidden_width * my_array.size, scroll_frame.size.height)
hidden_scroll.delegate = parent
hidden_scroll.clipsToBounds = true
hidden_scroll.pagingEnabled = true
hidden_scroll.showsHorizontalScrollIndicator = false
hidden_scroll.layer.borderWidth  = 1
hidden_scroll.layer.borderColor  = UIColor.colorWithRed(200.0/255, green:200.0/255, blue:200.0/255, alpha: 1).CGColor
hidden_scroll.backgroundColor  = UIColor.colorWithRed(248.0/255, green:248.0/255, blue:248.0/255, alpha: 1)
hidden_scroll.scrollEnabled = false

my_array.each_with_index do |data, index|
  hidden_view = UIView.alloc.initWithFrame(CGRectMake(
      (parent.view.frame.size.width * index), 0, parent.view.frame.size.width, 50
    )
  )

  label_frame           = CGRectMake(
    40, 5, (parent.view.frame.size.width - 40 - 7) * 2/3, 40
  )
  label                 = UILabel.alloc.initWithFrame(label_frame)
  label.font            = UIFont.boldSystemFontOfSize(11)
  label.backgroundColor = UIColor.clearColor
  label.text            = data[0]
  label.numberOfLines   = 0
  label.lineBreakMode   = UILineBreakModeWordWrap
  label_size            = data[0].sizeWithFont(label.font)
  label.sizeToFit
  new_frame             = label.frame
  new_frame.origin.y    = (50 - label.frame.size.height) / 2
  new_frame.size.height = label.frame.size.height
  label.frame           = new_frame

  button = UIButton.buttonWithType(UIButtonTypeCustom)
  button.backgroundColor = UIColor.orangeColor
  button.font = UIFont.systemFontOfSize(11)
  button.setTitle(data[3].upcase, forState:UIControlStateNormal)
  button.setTitleColor(UIColor.whiteColor, forState:UIControlStateNormal)
  button.layer.cornerRadius = 2.0
  button.instance_variable_set(:@data, data)
  button_size = data[3].upcase.sizeWithFont(button.font)
  button.frame = [
    [label.frame.origin.x + label_frame.size.width + 5, (50 - label_size.height) / 2 - 3],
    [80, button_size.height + 6]
  ]

  button.addTarget(parent, action:"add_user_goal:", forControlEvents:UIControlEventTouchUpInside)

  hidden_view.addSubview(label)
  hidden_view.addSubview(button)

  hidden_scroll.insertSubview(hidden_view, belowSubview: cell.contentView)
end

【问题讨论】:

【参考方案1】:

由于 UIScrollView 无论如何都不在视图中,因此请尝试在用户点击单元格以查看它时创建 UIScrollView。在此之前,单元格只有一个空白区域。

为了更简洁的代码,我还建议继承 UIScrollView 并在自定义初始化程序中进行自定义。

class CellScrollView < UIScrollView
  def initWithCustom(args=)
    self.initWithFrame(args[:frame])

    # ... all your customizations. Use the args hash to pass in any other data you need.

    self
  end
end

【讨论】:

将表格单元格添加到现有表格行,jQuery

】将表格单元格添加到现有表格行,jQuery【英文标题】:Addtablecelltoexistingtablerow,jQuery【发布时间】:2011-12-1401:56:45【问题描述】:我正在尝试使用jQuery向表格添加值-不幸的是,我不知道如何让jQuery将表格单元格添加到现有行。... 查看详情

以编程方式将按钮添加到表格视图单元格[关闭]

】以编程方式将按钮添加到表格视图单元格[关闭]【英文标题】:Addbuttonsprogrammaticallytotableviewcells[closed]【发布时间】:2011-10-1104:25:27【问题描述】:我可以在表格视图中添加和删除单元格。如何为每个添加的单元格设置两个按... 查看详情

PhpWord 将图像添加到表格单元格

】PhpWord将图像添加到表格单元格【英文标题】:PhpWordaddimagetotablecell【发布时间】:2021-01-2413:14:25【问题描述】:我想替换文档中的变量(test_var),我可以创建一个表格并用addText向其中添加文本,但是addImage方法没有添加图像... 查看详情

将手势识别器添加到表格单元格中的图像视图

】将手势识别器添加到表格单元格中的图像视图【英文标题】:Addingagesturerecognizertoanimageviewinatablecell【发布时间】:2017-07-1205:10:56【问题描述】:如何将手势识别器添加到表格单元格中的UIImageView?我想要这样,如果用户点击单... 查看详情

Word VBA 将 Inlineshape 对象添加到表格单元格

】WordVBA将Inlineshape对象添加到表格单元格【英文标题】:WordVBAAddInlineshapeObjecttoTableCell【发布时间】:2018-08-2911:13:28【问题描述】:我正在从MSAccessVBA创建Word文档我想在表格单元格中添加一个Inlineshape对象:我这样创建照片对象... 查看详情

如何将 UITableviewcell 子视图添加为 uiscrollview

】如何将UITableviewcell子视图添加为uiscrollview【英文标题】:howtoaddUITableviewcellsubviewasuiscrollview【发布时间】:2013-04-1505:20:49【问题描述】:我有UITableViewCell子视图作为UIScrollview和UIscrollview作为动态uilabels,我需要水平滚动分页。... 查看详情

将表格视图快速添加到表格视图单元格中的问题

】将表格视图快速添加到表格视图单元格中的问题【英文标题】:Problemwithaddingtableviewintotableviewcellswift【发布时间】:2020-07-2907:14:26【问题描述】:我想显示带有单元格的表格视图,其中将是一个标签和该标签下方的表格视图。... 查看详情

将占位符添加到表格视图单元格上的文本字段

】将占位符添加到表格视图单元格上的文本字段【英文标题】:Addingplaceholdertotextfieldontableviewcell【发布时间】:2015-12-2919:58:32【问题描述】:我在表格视图单元格上创建了​​一个文本字段。但我希望能够添加一个占位符。【... 查看详情

将文本字段动态添加到表格视图单元格并水平滚动

】将文本字段动态添加到表格视图单元格并水平滚动【英文标题】:Addingtextfielddynamicallytotableviewcellandscrollithorizontally【发布时间】:2015-05-0413:40:02【问题描述】:我创建了一个横向显示的表格视图。我想向表格单元格动态添加... 查看详情

将表格视图单元格滚动到视图之外时,单元格文本会更改

...问题描述】:我有一个UITableView,并以编程方式向单元格添加两个按钮。1个按钮添加到单元格文本(向上计数),另一个减去1(向下计数)。但是,假设我添加4,单元格的文本将是4,但是当我向上滚动该单元格并移出视图时 查看详情

如何在不丢失表格视图单元格的情况下将现有集合视图添加到表格视图

】如何在不丢失表格视图单元格的情况下将现有集合视图添加到表格视图【英文标题】:Howtoaddexistingcollectionviewstotableviewwithoutlosingtableviewcellsinswift【发布时间】:2021-01-3014:35:57【问题描述】:我正在尝试将两个具有自己偏好的... 查看详情

将一个水龙头从 UIScrollView 传递到其父视图

】将一个水龙头从UIScrollView传递到其父视图【英文标题】:PassatapfromUIScrollViewtoitsparentview【发布时间】:2009-12-0917:23:08【问题描述】:我有一个自定义UITableViewCell,其中有一个UIScrollView覆盖整个单元格。我希望能够使用滚动视图... 查看详情

Swift:如何将 backgroundView 添加到不会被拖动的表格单元格?

】Swift:如何将backgroundView添加到不会被拖动的表格单元格?【英文标题】:Swift:HowtoaddabackgroundViewtoatablecell,thatdoesnotgetdragged?【发布时间】:2015-04-2611:08:08【问题描述】:我想在UITableViewCell后面有第二个contentView或subView,它不会... 查看详情

Swift - 将手势识别器添加到表格单元格中的对象

】Swift-将手势识别器添加到表格单元格中的对象【英文标题】:Swift-addgesturerecognizertoobjectintablecell【发布时间】:2015-08-2919:53:44【问题描述】:我正在尝试将手势识别器添加到表格视图单元格中的对象(特别是图像)。现在,我... 查看详情

将表格视图添加到滚动视图并让滚动视图随着单元格添加到表格视图而不断增长

】将表格视图添加到滚动视图并让滚动视图随着单元格添加到表格视图而不断增长【英文标题】:Addtableviewtoscrollviewandhavescrollviewkeepgrowinginheightascellsareaddedtotableview【发布时间】:2018-09-1206:00:44【问题描述】:我想制作一个包含... 查看详情

快速点击按钮时将单元格添加到表格视图

】快速点击按钮时将单元格添加到表格视图【英文标题】:AddingcelltoTableviewwhenbuttontappedinswift【发布时间】:2020-12-1212:07:04【问题描述】:我必须在我的应用中查看。mainMeasurements和historyMode。在主测量中,用户可以拍照并测量距... 查看详情

使用对话框将脚本添加到 Google 表格中的单元格

】使用对话框将脚本添加到Google表格中的单元格【英文标题】:AddingascripttoacellinGoogleSheetswithDialogBox【发布时间】:2017-12-2106:16:26【问题描述】:如何使用对话框将脚本添加到Google脚本中的单元格?当我现在尝试这样做时,我收... 查看详情

如何将点击处理程序添加到单元格表格构建器的子行

】如何将点击处理程序添加到单元格表格构建器的子行【英文标题】:Howtoaddclickhandlertothesubrowofthecelltablebuilder【发布时间】:2012-09-2606:40:28【问题描述】:我可以使用celltablebuilder构建自定义行。单击特定的锚单元格时,我可以... 查看详情