【发布时间】:2013-10-15 19:06:21
【问题描述】:
在我的 iPad 应用程序中,我将有一个 UITableView 显示在弹出窗口中。我有多个要显示的值,因此我制作了一个带有多个标签的自定义UITableViewCell,以模拟表格中的许多“列”。我想做的是确保我所有的“列”都排成一行。
问题是,我无法对列的宽度进行硬编码,因为我正在从 XML Web 服务动态填充数据 - 所以在我进行调用之前我不知道它们需要多宽并且收到数据。
我的想法是遍历数据(一旦我得到它),并使用NSString 的sizeWithAttributs: 方法来获取我的每一列的最大宽度。然后我会将该宽度发送到我的自定义单元格,以便该单元格可以在其layoutSubviews 方法中使用它。问题是,我正在尝试使用NSLayoutConstraints 来完成所有这些工作,并且在我看到的所有示例中,constraintsWithVisualFormat: 中的任何尺寸都是硬编码的——直到运行时我才知道我的尺寸是多少。我的想法是做类似的事情
NSDictionary *myDictionary = NSDictionaryOfVariableBindings(myLabel1,myLabel2)
NSArray *myConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[myLabel1(%d)]-[myLabel2(%d)]",myWidth1,myWidth2 options:NSLayoutFormatAlignAllBaseline metrics:nil views:myDictionary];
但这会导致构建错误。是否可以在运行时动态地为constraintsWithVisualFormat 提供大小,而不是硬编码?
【问题讨论】:
标签: ios objective-c uitableview ios7 autolayout