使用nib“loadNibNamed”时,单元格不会调整自身大小

时间:2018-03-06 06:53:50

标签: ios objective-c uitableview custom-view

我使用带有多个标签的stactView创建了一个tableview单元格,以便它们可以自动调整标签的动态内容。它在桌面视图中完美地发挥作用。

但现在我需要在具有动态内容的视图中使用相同的单元格。 我称这个单元格就像

NSArray * arr =[[NSBundle mainBundle] loadNibNamed:@"StaticCalloutView" owner:nil options:nil];
StaticCalloutView * staticView = [arr firstObject];

staticView.imageView.image = [UIImage imageNamed:@"permit-pin.png"];
staticView.lblTitle.text = (NSString *) [feature attributeForKey:ATTRIBUTE_DESCRIPTION];
staticView.lblDesc.text = (NSString *) [feature attributeForKey:ATTRIBUTE_LOCATION];

但这里的问题是在这种情况下它没有调整自身的大小。 对于tableview我使用AutomaticDimension但在这种情况下我应该使用什么,以便我正在调用的视图将扩展或压缩到数据传递到标签。 ??

constraints View

我在调试时注意到的一件事是当我删除最顶层stackView的底部约束时,然后stackview使用内容调整自身,但是它显示的视图没有。

2 个答案:

答案 0 :(得分:0)

您需要在StaticCalloutView类中覆盖intrinsicContentSize变量,此变量允许视图根据您使用的内容或任何条件自动调整大小,有些UIControl默认实现此方法{{ 1}}和UILabel是两个例子

这是内在contentSize实现的示例,请注意,此UIButton将根据CustomAutoresizableView中的项目数量增加40倍增加

arrayOfValues

答案 1 :(得分:0)

Apple documentation

  

对于除填充对齐之外的所有对齐,堆栈视图使用每个对齐   在计算它时,排列视图的内在内容大小属性   垂直于堆栈轴的大小

它不扩展的原因是标签宽度不明确。 UILabel需要知道宽度才能在多行中正确布局。检查并尝试这些选项

  1. 将UILabel的numberOfLines属性设置为0.
  2. lineBreak属性设置为WordWrap
  3. 设置细节的宽度约束 标签或包含标签的视图。