相关疑难解决方法(0)

UITabel在具有自动布局的UITableViewCell中具有错误的高度

我有一个UITableView固定高度为100点的细胞.单元格在xib文件中创建,该文件使用3个约束将a固定UILabel到单元格的左,右和上边缘contentView.标签的垂直拥抱优先级设置为1000,因为我希望单元格的高度尽可能小.

当xib文件中单元格的宽度设置为320磅,与iPhone上的tableView宽度相同时,autolayout按预期工作.但是,当我将单元格的宽度设置为小于320点时,我得到了意想不到的结果.(我想在tableViews中使用具有不同宽度的相同单元格,例如在通用应用程序中)

例如:当我将宽度设置为224点并为标签提供一个占据该宽度的2行的文本时,标签的高度将增加以适应2行,但是当单元格调整为320点以适应一个tableView的宽度,文本只占1行,但标签的高度保持2行.

我在GitHub上放了一个示例项目来演示这个问题:https://github.com/bluecrowbar/CellLayout

有没有办法让UILabel总是调整大小以拥抱其文本内容?

uitableview ios autolayout

22
推荐指数
2
解决办法
2万
查看次数

在UITableViewCell的子视图上设置遮罩层会覆盖自动布局约束

我有一个UITableViewCell多个子视图.其中一个子视图是a UILabel,单元格的高度是根据文本的大小动态调整的UILabel.这非常有效.

我在单元格中有另一个子视图也有约束.该子视图始终应与单元格具有完全相同的高度.这也非常有效.

但是,在尝试在该子视图上设置遮罩层时遇到问题.遮罩层正常工作,但子视图的高度错误,并且与单元格的高度不同.

这是我的掩码层代码:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.mySubview.bounds
                                              byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight)
                                                    cornerRadii:CGSizeMake(10, 10)];

CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = self.mySubview.bounds;
maskLayer.path = maskPath.CGPath;
self.mySubview.layer.mask = maskLayer;
Run Code Online (Sandbox Code Playgroud)

我一直在做研究,并试图找到一种方法来解决这个问题,所以我既可以设置遮罩层,也可以让子视图具有正确的高度但是我无法让它工作.

我已经看过几次推荐这个解决方案了:

[self setNeedLayout];
[self layoutIfNeeded];
// Customize cell after here
Run Code Online (Sandbox Code Playgroud)

但这对我也不起作用.有没有办法让我知道何时应用了自动布局约束,以便我可以在之后应用遮罩层?

掩码层代码非常简单,它使用子视图的边界,并且边界是关闭的,因为它使用了在应用约束之前存在的边界并且子视图具有正确的高度.至少我认为我理解正确.

objective-c uitableview calayer ios autolayout

3
推荐指数
1
解决办法
2143
查看次数

标签 统计

autolayout ×2

ios ×2

uitableview ×2

calayer ×1

objective-c ×1