Ios 如何根据cellForRowAtIndexPath中的设备信息获取单元格宽度。我使用Autolayout和UITableViewAutomaticDimension

Ios 如何根据cellForRowAtIndexPath中的设备信息获取单元格宽度。我使用Autolayout和UITableViewAutomaticDimension,ios,uitableview,autolayout,Ios,Uitableview,Autolayout,我的自定义单元格和故事板的设计在iPhone8中,标签的宽度是355,但当我在iPhone5中运行project时,我希望按照iPhone5的要求宽度为300,但当我在iPhone5中运行project时,标签的宽度仍然是355。 如何在iPhone5中获得标签宽度300 伙计们,请告诉我如何根据设备情况获得标签的宽度 这里是我的代码链接 请帮助我在cellForRowAt中打印单元格/子视图框会给出不正确的值,因为单元格尚未放置,您的单元格显示正确,但您必须注册单元格而不是此行 -

我的自定义单元格和故事板的设计在iPhone8中,标签的宽度是355,但当我在iPhone5中运行project时,我希望按照iPhone5的要求宽度为300,但当我在iPhone5中运行project时,标签的宽度仍然是355。 如何在
iPhone5
中获得
标签
宽度300

伙计们,请告诉我如何根据设备情况获得
标签的宽度

这里是我的代码链接


请帮助我

cellForRowAt
中打印单元格/子视图框会给出不正确的值,因为单元格尚未放置,您的单元格显示正确,但您必须注册单元格而不是此行

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        [self.tableView registerNib:[UINib nibWithNibName:@"CustomCell_iPhone"
                             bundle:[NSBundle mainBundle]]
             forCellReuseIdentifier:@"CustomCell"];
    }


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomCell";
    CustomCell_iPhone *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    return cell;

}
cell = [[[NSBundle mainBundle] loadNibNamed:@"CustomCell_iPhone" owner:self options:nil] objectAtIndex:0];
我在下面看到了正确的一行,您对它进行了注释,如果您想在自定义单元格类的
layoutSubviews
方法中显示正确的帧并打印它们,那么xib应该只包含一个根单元格,因此您必须删除其中一个单元格,如果您想在tableView中同时使用这两个单元格,那么为每个单元格创建单独的xib

//

//

由于tableView占据了整个屏幕的宽度,并且从两侧将单元格边距设置为10,因此可以使用此设置来获得cellForRowAt内部的lbl宽度

CGFloat wid = [[UIScreen mainScreen] bounds].size.width - 20

不使用硬编码宽度,而使用单元格宽度的
UIScreen.main.bounds.width
。您使用的单元格实际上是从xib返回的单元格大小。您也可以尝试在viewDidLoad中注册单元格,如果您将其注册为tableView,然后在CellForRowatinex中重新使用,您将获得所需的行为。@Abulhassan我如何才能做到这一点,请详细说明。我想你明白我的问题了。检查我下面的答案,然后做你的修改。:)我的应用程序崩溃,并给出以下错误原因:“为标识符(CustomCell)注册的nib无效”-nib必须正好包含一个顶级对象,该对象必须是UITableViewCell实例”获取nib并检查属性检查器在reuseIdentifier字段中设置CustomCell。我从何处获取reuseIdentifier?对不起,我没有understand@AnkurPatel我在回答中阐明了崩溃的原因选择nib后,您将在左窗格中看到视图层次结构单击tableViewCell,然后您将在右窗格中看到它。是的,您可以删除第二个单元格。我在CustomCell.m中使用layoutSubviews,但我无法根据设备智能获取帧。它提供了正确的值,您的文件不包含它。我是否在CustomCell.m文件中写入layoutSubviews?UIViewControllerInSide CustomCell.M-(void)layoutSubviews{[super layoutSubviews];NSLog(@“lblTemp frame3:%@”,nsStringFromcRect(self.lblTemp.frame));}内CustomCell 2018-08-10 18:51:14.895155+0530 demoCell[11042:6883850]lblTemp frame3:{{10,10},{355,80}我想要cellForRowAtIndexPath中的实际宽度,因为我必须进行一些计算。以及在CellForRowatineXpath返回单元格后调用layoutSubviews方法
CGFloat wid = [[UIScreen mainScreen] bounds].size.width - 20