我正在使用Interface Builder为iPad应用程序设计自定义UITableViewCell 。
我有一个专用的XIB文件,它有一个UITableViewCell作为其根视图。我能够将UITableViewCell的宽度更改为1024(在XCode的右侧属性窗格中的“大小”检查器中),并且此操作会暂时调整画布上的单元格大小。
然而,如果之后我尝试移动/调整UITableViewCell中的某些项目或关闭并重新打开XIB,XCode决定将UITableViewCell的宽度重置为320(iPhone特定宽度)。
画布上的单元格会遮挡单元格中的项目,并且除非我再次调整单元格大小,否则无法设计单元格。一旦你绕过这个循环几次就会变得相当烦人。
任何人都知道如何设置宽度以使其永久或者如何指定UITableViewCell是否特定于iPad?
重新创建......
设备系列== iPad
将新的UITableViewCell拖到画布上(尽管先前选择了iPad,但其宽度为320)
编辑:
我刚收到苹果公司对我很久以前创建的雷达车票的以下回应......
Hello Oliver,
这是关于Bug ID#13222753的后续行动。
工程部已要求提供以下信息 进一步调查此问题:
我们认为此问题已在最新的Xcode 5.1 Seed中得到解决。
这是适用于Mac的Xcode开发人员工具集的预发布版本, iPhone和iPad。它包括Xcode IDE,iOS模拟器等 构建OS X和iOS应用程序所需的工具和框架。请 测试此版本,并使用结果更新您的错误报告。
Xcode 5.1 Seed - Build 5B71f发布日期:2013年12月13日
我还试图在Xcode 5.0.2中重新创建问题,看起来它也与该版本一起修复了。
答案 0 :(得分:6)
我不知道您是否认为这是一个有效的答案,但是当我在IB中使用 autolayout 时,似乎只出现了这个问题。如果我关闭它,Xcode调整UITableViewCell大小的问题就消失了。
要关闭自动布局,只需选择UITableViewCell,然后在“文件检查器”的右侧,有一个 autolayout 复选框可将其关闭。< / p>
答案 1 :(得分:5)
解决方法是不向表笔添加表视图单元格。而是使用常规视图来包含子视图。
创建一个自定义UITableViewCell类,用于加载nib并将顶级nib视图设置为单元格内容视图的子视图:
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UINib *nib = [UINib nibWithNibName:@"YourNibName" bundle:nil];
UIView* containerView = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
containerView.translatesAutoresizingMaskIntoConstraints = NO
[self.contentView addSubview:containerView];
NSDictionary *views = NSDictionaryOfVariableBindings(containerView);
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[containerView]|" options:0 metrics:nil views:views]];
[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[containerView]|" options:0 metrics:nil views:views]];
}
return self;
}
使用表格视图注册您的课程:
[tableView registerClass:YourCellClass forCellReuseIdentifier:@"YourCellID"]`
答案 2 :(得分:1)
我刚做了一个测试,没有问题调整细胞大小。如果使用'for iPhone'或'for iPad'选项创建Xib,它确实没有任何区别。所以,这可以按预期工作。
诀窍是,不要拖动大小,而是使用Inspector更改宽度 - 这会使单元格的大小为1024.
答案 3 :(得分:0)
我确认Edward Huynh's answer是正确的。与此同时,我无法关闭自动布局,更改高度,再次返回自动布局。这将要求我重做内容视图的每个子视图的所有自动布局设置。
我只是在试验并发现在TextEdit中打开xib文件并更改宽度&amp; tableViewCell和tableViewCellContentView的高度实际上将保留所有自动布局,并更新单元格的大小。几乎没有限制因素。常量值现在已经过时,可以通过使用&#34;更新约束来轻松修复&#34;关于这些限制。