自定义 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 作为 IBOutlet