动态更改图像视图宽度以匹配标签文本宽度的最佳方法是?

时间:2015-09-30 21:17:34

标签: ios objective-c uitableview autolayout

我正在通过nib文件构建UITableViewCell。我还有一个相应的UITableViewCell子类,nib的出口连接到它。

我需要动态调整大小UIImageView(仅宽度)作为tableviewcell标签的背景。有没有办法可以通过autolayout实现?

我尝试将imageview设置为代码中标签的子视图:

[theLabel sizeToFit]
CGRect boundingRect = [theLabel.text boundingRectWithSize: theLabel.frame.size options:NSStringDrawingUsesLineFragmentOrigin attributes:0 context:0];
UIImageView *background = [[UIImageView alloc]initWithFrame:boundingRect];
background.image = [UIImage imageNamed: @"validImageName"]];
[theLabel addSubview: background];

然而,这不会产生正确的帧。我还考虑使用[UIColor colorWithPatternImage: @"aValidImageName"];设置标签的背景,但这不包括背景图像上的填充。此外,背景图像包含我想要保留的圆角(此方法切割)。任何想法都表示赞赏。

2 个答案:

答案 0 :(得分:0)

试试这个,

1)您可以使用自动调整来根据屏幕大小更改图像宽度。

<强>(OR)

2)为您的imageview设置自定义框架

例如:

UIImageView *background = [[UIImageView alloc]initWithFrame:(0,0,Your_Custom_Width_Size_Value,100)];
background.image = [UIImage imageNamed: @"validImageName"]];
[theLabel addSubview: background];

                        (or)

//根据标签

更改宽度
UIImageView *background = [[UIImageView alloc]initWithFrame:(0,0,Your_Label_Name.frame.size.width,100)];
    background.image = [UIImage imageNamed: @"validImageName"]];
    [theLabel addSubview: background];

答案 1 :(得分:0)

我建议你使用UIView对象作为容器,并将UIImageView和UILabel作为子视图添加到它。向图像视图和标签添加约束,使其高度和宽度始终等于超视图。然后只需给容器UIView你想要的任何帧。