【问题标题】:UITableViewCell strange width?UITableViewCell 奇怪的宽度?
【发布时间】:2010-07-29 16:59:39
【问题描述】:

我已经设置了一个 UITableView(320 宽)和一个在 IB 中创建的 UITableViewCell,单元格也是 320 宽。在 UITableViewCell (或我的子类是正确的)中设置背景图像(320 宽)后,我注意到单元格没有到达 UI 的右侧(请注意所选单元格上的蓝色和上方的灰色) 有谁知道是什么原因造成的?

干杯加里

【问题讨论】:

  • 确保单元格的 contentView 也具有正确的宽度。

标签: iphone objective-c cocoa-touch


【解决方案1】:

我在 UITableView 上设置了分隔符样式和分隔符颜色,这使分隔符的单元格高度偏离了 1 个像素,并将背景向右偏移了大约 5 个像素。如果我将进入单元格的背景图像从 320x65 减少到 320x64,它完全适合,没有偏移。

下面两个屏幕的唯一区别是:

左:UITableView Seperator = "None"(UITableViewCell 背景没有偏移)

右:UITableView Seperator = "Single Line"(UITableViewCell 背景有偏移)

数据:

  • 单元格分辨率:320x65
  • 单元格视图:320x65
  • 单元格背景图像分辨率:320x65

如果您想使用分隔符,您的单元格背景图像需要为 320x64,这将阻止它横向移动并正确显示单元格。

干杯加里

【讨论】:

    【解决方案2】:

    在我看来,您只是没有正确设置背景图像视图的 contentMode(即,您将其设置为 aspectFit 或其他内容)。你确定它偏移了 5,而不是实际缩小了 5 个像素?

    例如,如果原始图片是 320x65,并且高度降低到 64,aspectFit 会在保持相同纵横比的情况下将其缩放到64/65 * 320 ~= 315

    【讨论】:

    • 很难看到它隐藏在单元格边缘。您在右侧看到的蓝色是您在选择单元格时看到的完整突出显示。如果图像被缩放,您会希望在顶部或底部也看到蓝色。同样有趣的是,当你关闭分隔符时它是如何神奇地开始工作的,所以我猜它是正确安装的。
    • 我刚刚通过在一个 320x65 的黑色单元周围放置一个 1 像素的白色边框来测试这一点,边框上的分隔符恰好接触到单元格的所有侧面,除了右边的白色按下面的蓝色。所以高度是正确的,它是缩放的宽度。
    • 如果我没看错的话,你有一个 320x65 的图像,除了白色边框外全是黑色的。如果这是真的,那么在打开分隔符的情况下,您会将 320x65 图像拟合到 320x64 视图中,并且由于纵横比,这会使图像缩小到 315x64。同样,正确设置 contentMode 可以解决此问题(在这种情况下,您需要 scaleToFit)。