UITableViewCell宽度未根据ios设备类型动态调整

UITableViewCell宽度未根据ios设备类型动态调整,ios,objective-c,ios-autolayout,uitableview,Ios,Objective C,Ios Autolayout,Uitableview,我的tableview单元格完全是以编程方式创建的(我正在尝试学习如何从头开始构建一个应用程序,而不使用故事板),单元格的宽度越来越乱 这是iPhone 6 Plus手机的屏幕截图。我试图设置单元格,使单元格(self.view)中的UIView自动调整,以填充整个屏幕。我不知道为什么宽度保持不变。如有任何建议,将不胜感激 -(instancetype)initWithTweet:(PCRTweet *)tweet reuseIdentifier:(NSString *)reuseIdentif

我的tableview单元格完全是以编程方式创建的(我正在尝试学习如何从头开始构建一个应用程序,而不使用故事板),单元格的宽度越来越乱

这是iPhone 6 Plus手机的屏幕截图。我试图设置单元格,使单元格(self.view)中的UIView自动调整,以填充整个屏幕。我不知道为什么宽度保持不变。如有任何建议,将不胜感激

-(instancetype)initWithTweet:(PCRTweet *)tweet reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super init];

if (self) {
    _tweet = tweet;

    reuse = reuseIdentifier;

    CGSize cellSize = self.contentView.frame.size;

    CGRect backgroundView = CGRectMake(10.f, 5.f, (cellSize.width-20.f), (cellSize.height + 90.f));


    self.view = [[UIView alloc] initWithFrame:backgroundView];
    self.view.backgroundColor = [UIColor whiteColor];
    self.view.layer.cornerRadius = 8;
    self.view.layer.masksToBounds = YES;
    self.view.layer.borderWidth = 1.0f;
    self.view.layer.borderColor = background_color_gray.CGColor;
    self.view.layer.masksToBounds = NO;

    [self.contentView addSubview:self.view];

    CGRect picView = CGRectMake(0.f, 0.f, 65.f, 65.f);

    self.contentView.backgroundColor = background_color_gray;

}

return self;
}

请阅读以下检查表上的要点,以确保你做得很好:

-[]您是否检查过您的内容视图是否在动态变化

-[]您是否尝试过以编程方式设置约束

-[]尝试在最大视图上使用约束:将自动调整相对视图


除此之外,您还可以为您的框架自动调整大小。

请阅读以下检查表中的要点,以确保您能够正确地进行调整:

-[]您是否检查过您的内容视图是否在动态变化

-[]您是否尝试过以编程方式设置约束

-[]尝试在最大视图上使用约束:将自动调整相对视图


除此之外,您还可以为您的框架自动调整大小。

您可以在table view类中尝试这两种UITableView委托方法

动态高度

#pragma mark - UITableView Delegates

-(CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NSIndexPath )indexPath {

     return 44.0;
}

-(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {

    return UITableViewAutomaticDimension;
}
宽度(获取视图控制器宽度和背景视图)


您可以在表视图类中尝试这两种UITableView委托方法

动态高度

#pragma mark - UITableView Delegates

-(CGFloat)tableView:(UITableView )tableView estimatedHeightForRowAtIndexPath:(NSIndexPath )indexPath {

     return 44.0;
}

-(CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {

    return UITableViewAutomaticDimension;
}
宽度(获取视图控制器宽度和背景视图)


尝试对视图使用自动调整大小

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth;

尝试对视图使用自动调整大小

self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth;


是否对tableview使用约束?使用self.view.frame.size.width-20.f CGRect backgroundView=CGRectMake(10.f,5.f,(self.view.frame.size.width-20.f),(cellSize.height+90.f));我建议您在LayourSubview中修改框架或使用约束。您在tableview上使用约束吗?使用self.view.frame.size.width-20.f CGRect backgroundView=CGRectMake(10.f,5.f,(self.view.frame.size.width-20.f),(cellSize.height+90.f));我建议您修改LayourSubview中的框架或使用constraint。如何检查contentview是否正在动态更改?因为您没有使用storyboard+约束,所以可以尝试简单地打印框架坐标和尺寸。。有点老套,但值得一试。当我记录尺寸时,不管设备类型如何,宽度都显示为320,这意味着它不会动态变化。在此之前,您的容器视图如何显示在屏幕上?你能给我看看吗?如果您的容器视图应该与iPhone的屏幕相同,您可以参考此()了解屏幕大小。我不确定您所指的容器视图是什么。这就是它加载到6+时的样子。白色视图应该延伸到外部边界。如何检查contentview是否在动态变化?因为您没有使用storyboard+约束,所以可以尝试简单地打印帧坐标和尺寸。。有点老套,但值得一试。当我记录尺寸时,不管设备类型如何,宽度都显示为320,这意味着它不会动态变化。在此之前,您的容器视图如何显示在屏幕上?你能给我看看吗?如果您的容器视图应该与iPhone的屏幕相同,您可以参考此()了解屏幕大小。我不确定您所指的容器视图是什么。这就是它加载到6+时的样子。白色视图应该延伸到外部边界。那没用。这个问题与宽度而不是高度有关。我尝试添加CGSize cellSize=self.contentView.superview.frame.size;但这并没有改变任何没有帮助的事情。这个问题与宽度而不是高度有关。我尝试添加CGSize cellSize=self.contentView.superview.frame.size;但这并没有改变什么