在UITableviewCell Autolayouts中获取UIView高度

时间:2018-04-17 06:05:09

标签: objective-c uitableview autolayout

我希望根据UIViewA方法的设备获得cellForRowAtIndexPath的实际宽度,并且'UIViewA'位于自定义UITableViewCell中。我在UITableViewCell中使用了AutoLayouts。

我的UIViewA在Custom UITableViewCell中,UITableviewCell Width = 384 和我的UITablVIewWidth = 284。 所以我需要在cellForRowAtIndexPath

的UIViewA宽度为284

请指导我如何在UIView获得cellForRowAtIndexPath的宽度,因为我想在UIView中添加动态内容。

3 个答案:

答案 0 :(得分:0)

怎么样?

cell.UIViewA.frame.size.width

cell.UIViewA.bounds

答案 1 :(得分:0)

将其添加到单元格中的视图创建

UIView *backgroundView = [UIView new];
[backgroundView setTranslatesAutoresizingMaskIntoConstraints:NO];
[backgroundView setBackgroundColor:[UIColor grayColor]];
backgroundView.layer.cornerRadius = 5;
[self addSubview:backgroundView];


NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(backgroundView);


[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[backgroundView]|"
                                                                                options:0
                                                                                metrics:nil
                                                                                  views:viewsDictionary]];

[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[backgroundView]|"
                                                                                options:0
                                                                                metrics:nil
                                                                                  views:viewsDictionary]];

现在您可以打印视图框并获得宽度。

答案 2 :(得分:0)

通常,当您需要查看视图的框架或边界并使用Autolayout定位时,请首先执行以下操作:

[myView setNeedsLayout];
[myView layoutIfNeeded];

现在myView将拥有正确的框架和边界。