我使用带有多个标签的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但在这种情况下我应该使用什么,以便我正在调用的视图将扩展或压缩到数据传递到标签。 ??
我在调试时注意到的一件事是当我删除最顶层stackView的底部约束时,然后stackview使用内容调整自身,但是它显示的视图没有。
答案 0 :(得分:0)
您需要在StaticCalloutView
类中覆盖intrinsicContentSize
变量,此变量允许视图根据您使用的内容或任何条件自动调整大小,有些UIControl默认实现此方法{{ 1}}和UILabel
是两个例子
这是内在contentSize实现的示例,请注意,此UIButton
将根据CustomAutoresizableView
中的项目数量增加40倍增加
arrayOfValues
答案 1 :(得分:0)
对于除填充对齐之外的所有对齐,堆栈视图使用每个对齐 在计算它时,排列视图的内在内容大小属性 垂直于堆栈轴的大小
它不扩展的原因是标签宽度不明确。 UILabel需要知道宽度才能在多行中正确布局。检查并尝试这些选项
numberOfLines
属性设置为0. lineBreak
属性设置为WordWrap