自定义 UIView(.xib) 在 UITableViewCell 中添加为子视图后自动更改框架

Posted

技术标签:

【中文标题】自定义 UIView(.xib) 在 UITableViewCell 中添加为子视图后自动更改框架【英文标题】:Custom UIView(.xib) changes frame automatically after adding as subview in UITableViewCell 【发布时间】:2014-10-11 09:43:16 【问题描述】:

由于要求,我用 .xib 制作了一个自定义 UIView。问题是当我分配,初始化 uiview 时,框架是好的,但是当我将视图作为子视图添加到 UITableViewCell.contentView 时,我的自定义视图的框架发生了巨大的变化。我什至尝试在添加为子视图后强制执行框架,但没有帮助。

我正在使用带有自动布局的storyBoard。当我在自定义视图中设置约束和删除所有约束时,问题仍然存在。

提前致谢。

【问题讨论】:

您是否更改了添加视图的特定单元格的行高? 没有。该行的高度固定为 120,我的视图高度为 100 【参考方案1】:

所以您的问题是当您将视图添加到单元格的内容视图时,您没有更改行高。以下是您需要实施的高度方法和更改:-

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

  if((indexPath.row==3 && rowSelected))  //You need to put condition check in which you need to see if that particular row is selected or not.
  //Then a flag for checking if view is added or not to it's contentView.
  //If both condition true then you need to provide a new height to that particular cell.

    return 220;  //120 height of your cell + 100 height of your view.
  else
    return 120;

【讨论】:

但我希望我的单元格的高度为 120,并将我的自定义视图(高度 - 100)添加到其中并相对于单元格居中。给出 220 的高度并创建一个更大的单元格 所以你可以返回 120 + 20 作为高度,它等于自定义视图(高度(120) - 100)。所以总之 20 额外将被添加到内容视图中。

以上是关于自定义 UIView(.xib) 在 UITableViewCell 中添加为子视图后自动更改框架的主要内容,如果未能解决你的问题,请参考以下文章

在 xib 中以编程方式自定义 UIView

在 .xib 中使用自定义 UIView 作为 IBOutlet

使用 XIB 创建自定义 UIView

使用自定义 uiview xib

如何借助 AutoLayout 在自定义 UITableviewCell 中添加自定义 UIView(xib)?

为UIView自定义Xib