我们正在使用UITableView
使用标签布局某些字段,并且我们得到了一些奇怪的行为。
我们有一个名为TextFieldView
的类,它实现了UITableViewCell
,并在其UITextField
中添加了UILabel
和subviews
。然后通过table-delegate将TextFieldView
添加为表格的单元格。我们使用cellForRowAtIndexPath
,heightForRowAtIndexPath
,numberOfRowsInSection
,didSelectRowAtIndexPath
。
问题是,当我们最初加载表时,所有单元格的高度都是44.但是当加载表格时,第一个和最后一个单元格框架的高度设置为45.再次,每次我们这样做a table.beginUpdates/table.endUpdates
(在文本更新时)第一个和最后一个单元格高度增加+1。
我们调用begin / endUpdates的原因是因为我们在更改其内容时也会扩展UITextView
。我们删除了UITextView
,看看这是否与'bug'有关,但事实并非如此。
我们希望有人有类似的问题 - 或者可以发现我们的脑屁! - 我们都缺乏想法: - )
以下是我们初始化UITableViewCell
:
class TextFieldView < UITableViewCell
....
def init()
super.initWithStyle(UITableViewCellStyleDefault, reuseIdentifier: nil)
self.selectionStyle = UITableViewCellSelectionStyleNone
self.styleClass = 'control'
@focus = UIImageView.alloc.initWithImage(UIImage.imageNamed('focus.png'))
frame = self.frame
@focus.frame = [[frame.size.width - 13, 8], [13, 28]]
@focus.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin
@focus.hidden = true
self.contentView.addSubview(@focus)
size = self.frame.size # 44 x 320
self.styleClass = 'control text-field'
@label = self.create_label([[10, 10], [140, 24]])
self.contentView.addSubview(@label)
@text_field = UITextField.alloc.initWithFrame([[160, 11], [size.width - 160 - 20, 24]])
@text_field.adjustsFontSizeToFitWidth = true
@text_field.minimumFontSize = 13
@text_field.autoresizingMask = UIViewAutoresizingFlexibleWidth
@text_field.borderStyle = UITextBorderStyleNone
@text_field.backgroundColor = UIColor.redColor
@text_field.font = UIFont.boldSystemFontOfSize(17)
@text_field.styleClass = 'control'
self.contentView.addSubview(@text_field)
#@text_field.delegate = is handle by the view controller
self
end
答案 0 :(得分:1)
我能想到的这些症状的唯一解释与您提供的代码示例不一致。如果您将可重复使用的单元格出列并设置它们,假设它们没有被重复使用,那么您将构建已经具有所需结构的单元格,这可能会导致单元格大小增加1个像素。例如,如果有足够的空间显示10行并且您有11行,则当您向上和向下滚动时,将重复使用第一个和最后一个单元格,并且每次都应用更改。上面的代码示例显示了nil的重用标识符,表明您没有重用单元格。但是,您的表视图数据源可能会尝试使单元格出列(您没有显示您执行该操作的代码),即使您显示的类假定情况并非如此,并且某种程度上RubyMotion在/之后调用init同时使细胞出列。也许这个解释会给你一些想法来调查或帮助其他人有相同的症状。