Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios (UITableViewCell)覆盖布局子视图是否与自动布局或故事板竞争?_Ios_Uitableview_Layoutsubviews - Fatal编程技术网

Ios (UITableViewCell)覆盖布局子视图是否与自动布局或故事板竞争?

Ios (UITableViewCell)覆盖布局子视图是否与自动布局或故事板竞争?,ios,uitableview,layoutsubviews,Ios,Uitableview,Layoutsubviews,我正在制作UITableView单元格的一个子类 我已将单元格contentView、backgroundView和selectedBackgroundView全部设置为tableView中设置的180.0行高的单个CGInsert。我的第一个问题是,当我尝试将inset rect指定给图像视图时,图像会向右推+-5个点。所以我求助于手工制作rect 然后我设置文本标签的大小和颜色,但是我指定的特定属性直到单击单元格后才会显示 当我不手动设置文本标签时-图像将文本标签推离屏幕,仅显示一个字母和一

我正在制作UITableView单元格的一个子类

我已将单元格contentView、backgroundView和selectedBackgroundView全部设置为tableView中设置的180.0行高的单个CGInsert。我的第一个问题是,当我尝试将inset rect指定给图像视图时,图像会向右推+-5个点。所以我求助于手工制作rect

然后我设置文本标签的大小和颜色,但是我指定的特定属性直到单击单元格后才会显示

当我不手动设置文本标签时-图像将文本标签推离屏幕,仅显示一个字母和一个。。。省略号

似乎我所做的每一次修改都会导致某些东西出现故障,而且我的代码似乎正在与某些自动系统竞争。这非常令人沮丧,我不知道该做什么,甚至不知道如何调试它。任何关于UITableViewCell中带有故事板的LayoutSubview的技巧都将非常棒,因为我似乎遗漏了一些关键的东西

我的布局子视图


为什么不在IB中创建包含所有子视图的单元格?约束将在那里设置,您可以根据需要进行调整。我想我会的。我把程序化视图构建作为一个学习课程,但是我被所有的陷阱打败了。我仍然不明白为什么我的layoutSubviews会变得疯狂——故事板是一个库存主细节设置。如果没有看到您的代码,很难说出来。@rdelmar只是使用故事板来完成我上面发布的所有操作,结果证明它应该是这样的。遗憾的是,用代码做事是如此的晦涩难懂。我觉得在使用IB时我失去了控制。事情发生冲突的原因是因为你正在设置帧。使用“自动布局”时,不应设置任何框架,而应调整约束。
-(void) layoutSubviews
{
    [super layoutSubviews];

    const CGRect insetRect            = CGRectInset( self.bounds, 7, 4 );

    self.contentView.frame            = insetRect;
    self.backgroundView.frame         = insetRect;
    self.selectedBackgroundView.frame = insetRect;

    self.imageView.frame              = CGRectMake(0, 0, 306, 172);
    self.textLabel.frame = CGRectMake(0, 132, 306, 40);
    self.textLabel.backgroundColor = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.5];

    self.backgroundColor = [UIColor clearColor];
    self.contentView.backgroundColor = [UIColor whiteColor];
    self.selectedBackgroundView.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.1];
}