Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.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_Ios8_Autolayout_Tableviewcell - Fatal编程技术网

Ios 使用动态高度时UITableViewCell的情节提要约束冲突

Ios 使用动态高度时UITableViewCell的情节提要约束冲突,ios,uitableview,ios8,autolayout,tableviewcell,Ios,Uitableview,Ios8,Autolayout,Tableviewcell,我对故事板有奇怪的问题。我正在重构我的应用程序代码,以获得使用行高度自动标注而不是UITableViewDelegate方法的优势。我的手机非常简单——它只有一个孩子,就是UIView。我增加了一些限制: 我有一些冲突: 但在模拟器上,一切都很好,我在控制台中并没有任何约束警告 你能告诉我怎么了吗?也许我不知道单元格动态大小的概念,但在我看来,我应该设置约束来确定单元格高度而不产生歧义(我的三个约束正在这样做)。与视图最近的邻居。对于单元格中的视图,底部是12,即superview.bott

我对故事板有奇怪的问题。我正在重构我的应用程序代码,以获得使用行高度自动标注而不是UITableViewDelegate方法的优势。我的手机非常简单——它只有一个孩子,就是UIView。我增加了一些限制:

我有一些冲突:

但在模拟器上,一切都很好,我在控制台中并没有任何约束警告


你能告诉我怎么了吗?也许我不知道单元格动态大小的概念,但在我看来,我应该设置约束来确定单元格高度而不产生歧义(我的三个约束正在这样做)。

与视图最近的邻居。对于单元格中的视图,底部是12,即superview.bottom.Margin(或单元格的内容视图)。您正在请求view.bottom的约束为8。此外,为了满足这些约束,Interface builder需要更改视图的高度(示例中的蓝色视图)。这当然不能做到,因为有一个约束将视图的高度限制为50

要解决此问题,请将“表格视图”单元格的高度更改为80,而不是默认的84。但是,如果要动态更改表格单元格的高度,可能会遇到更多的约束问题

或者将约束“垂直空间-(8)-内容视图”更改为常量12。所以它将是“垂直空间-(12)-内容视图”。同样,如果动态更改表格单元格的高度,则会出现问题

是否希望视图在表格单元格中居中?如果是这种情况,请删除两个垂直约束并添加一个中心y对齐约束。然后,当您更改单元的高度时,视图将通过计算顶部和底部约束应该是什么来垂直居中

下面是我创建的示例项目:

#import "testLayoutControllerTableViewController.h"

@interface testLayoutControllerTableViewController ()
@property (weak, nonatomic) IBOutlet UITableView *thetable;
@end

@implementation testLayoutControllerTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellid"];
    return cell;
}

@end

我会发布interface builder设置的图像以及它在模拟器中的外观,但我没有足够的声誉。

如果UITableViewCell的高度不是63,则三个约束是冲突的:)。您提到了“单元动态调整大小”,所以我想子视图的高度应该是可变的。在这种情况下,您可以尝试删除高度(50)约束。我不想显式设置UITableViewCell的高度。我想通过UITableViewCell子视图的高度自动布局确定此值。我明白了。故事板中显示的冲突可能来自“表格视图单元格”-高度的设置。如上所述,它必须是63(如果“分隔符”设置为“无”),否则正确的值是64。从何处获得值12?我添加了y约束作为contentView的垂直中心,但在这种情况下,当我在模拟器中运行它时,行的高度小于蓝色视图。当您尝试向视图添加底部约束时。建议的值是距离最近邻居的空间。对于底部视图,建议将垂直居中约束添加到蓝色UIView,而不是内容视图。如果您没有在代码中显式修改表格单元格的高度,并且Interface builder中的所有引用都连接正确,它应该可以正常工作。好的,我现在明白了。问题是故事板中单元格的高度造成的。我认为故事板中设置的高度只是为了测试。我已经将高度设置为63(50+5+8),没有故事板警告,一切正常。