我已经找到了一些有关此问题的问题,但对于如何真正做到这一点我还没有找到一个可靠的答案,所以我希望这不是因为没有找到具体答案而重复。
这是我的问题:我要重写一个旧的iOS应用程序,该应用程序具有带有自定义单元格的表格视图,并且在每个单元格中都有一个具有单一颜色的按钮。在运行时计算按钮的宽度,以显示每个按钮在每个单元格中的宽度,从而创建看起来像边图的按钮。
我想/需要做同样的事情,但是我的项目已经使用Autolayouts完成,并且我需要在iPhone和iPad上都可以使用它,因此在此时删除autolayout会很痛苦。
由于具有自动布局功能,因此我的单元格布局受到约束,并且当所有单元格的宽度相同时,它看起来还不错,但是我还没有找到一种在运行时更改其宽度的方法。
这也是我在SO上发现的问题中的另一个问题。
这是我的单元在运行时的样子:
我需要在中间(蓝色的东西)处保留此按钮,以使其保持在团队名称和值的中间,并且右边的值必须保持在相同的位置(因此,如果条形图不能移到左边非常小)。
在这个问题上的任何建议,将不胜感激。谢谢!
给按钮同时提供centerX和centerY约束;它将保持在中间。给它一个固定的宽度,并对该约束设置一个IBOutlet,以便您可以在代码中更新其常数值以修改钢筋的宽度。团队名称标签的左边缘应具有约束条件,而值标签的右边缘应具有约束条件;这将使它们在所有屏幕尺寸上都保持不变。
举例来说,表格视图控制器中的这段代码
- (void)viewDidLoad {
[super viewDidLoad];
self.theData = @[@{@"name":@"One", @"value": @6094, @"width": @200}, @{@"name":@"Two", @"value": @210, @"width": @20}, @{@"name":@"Three", @"value": @7075, @"width": @250}, @{@"name":@"Four", @"value": @6648, @"width": @225}, @{@"name":@"Five", @"value": @2300, @"width": @100}, @{@"name":@"Six", @"value": @900, @"width": @50}];
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return self.theData.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
RDTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
cell.leftLabel.text = self.theData[indexPath.row][@"name"];
cell.rightLabel.text = [NSString stringWithFormat:@"%@", self.theData[indexPath.row][@"value"]];
cell.widthCon.constant = [self.theData[indexPath.row][@"width"] floatValue];
return cell;
}
得到这个结果,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句