Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.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 8:UITableViewCell.contentView不';t在其中调整子视图的大小_Ios_Iphone_Ios8_Autolayout - Fatal编程技术网

iOS 8:UITableViewCell.contentView不';t在其中调整子视图的大小

iOS 8:UITableViewCell.contentView不';t在其中调整子视图的大小,ios,iphone,ios8,autolayout,Ios,Iphone,Ios8,Autolayout,我在UITableViewCell.contentView中放置了一个CustomView,将自定义视图的autoresizemask设置为W+H 但是在运行时,CustomView的高度比ContentView大,ContentView的高度是60pt(与UITableViewDelegate中的设置相同),但是ContentView内部的CustomView的高度是76pt 通过Xcode6的视图调试,我在自定义视图上看到了一些奇怪的约束,它们是: self.height = supervi

我在
UITableViewCell.contentView
中放置了一个
CustomView
,将自定义视图的
autoresizemask
设置为
W+H

但是在运行时,
CustomView
的高度比
ContentView
大,
ContentView
的高度是
60pt
(与
UITableViewDelegate
中的设置相同),但是
ContentView
内部的
CustomView
的高度是
76pt

通过
Xcode6的视图调试
,我在自定义视图上看到了一些奇怪的约束,它们是:

self.height = superview.height + 16

self.midY = superview.midY + 8
这些约束来自何处以及如何修改它们?我从来没有设置过8或16的值

更新:

我做了一个测试项目,它只是故事板中的一个tableview,从nib文件加载了一个
CustomView
,这个测试项目在运行时复制了这个问题,
CustomView
TableViewCell.contentView
的子视图,其高度大于
TableViewCell.contentView

测试项目如下:

我终于明白了,自动布局只能在同一个xib或故事板中形成关系,我的CustomView位于单独的xib中,并且在运行时加载,因此超级视图和CustomView之间没有任何自动布局约束

如果我将TranslatesAutoResizengMaskintoConstraints设置为YES,那么问题就出现了,我仍然不知道为什么使用W+H作为自动调整大小掩码会使CustomView比其超级视图(cell.contentView)更高,但我找到了一种解决方法:

我手动在superview和CustomView之间添加约束,并关闭
CustomView。翻译自动调整大小GMaskintoConstraints
,代码如下:

    customView.translatesAutoresizingMaskIntoConstraints = NO;

    NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeTop multiplier:1 constant:0];
    NSLayoutConstraint *bottom = [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeBottom multiplier:1 constant:0];
    NSLayoutConstraint *left = [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeLeft multiplier:1 constant:0];
    NSLayoutConstraint *right = [NSLayoutConstraint constraintWithItem:customView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeRight multiplier:1 constant:0];

    [cell.contentView addConstraints:@[top, bottom, left, right]];

您是否在故事板中禁用了IB的自动布局。@ashish。谁的自动布局?tableview还是CustomView?它属于您的整个故事板。尝试取消选中它,然后选中。@ashish。CustomView不在表视图的情节提要中,它位于动态加载的xib文件中。Ok。因此,您在故事板中使用autolayout,并从xib文件加载自定义视图。然后,尝试以编程方式在自定义视图上添加与父视图相关的约束。这可能有助于将自定义视图的高度保持在contentview边界内。