我正在尝试开发一个UITableView,它有sectionIndexTitles,哪些单元格有附件按钮。
问题是索引标题的滚动条会减小单元格的宽度,因此附件按钮处于丑陋的位置......
是否可以将按钮稍微向左移动到单元格内?
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.textLabel.text = @"text";
}
return cell;
}
正如你所看到的,我不会操纵细胞或类似的东西。
在这里你可以看到结果:
答案 0 :(得分:1)
有一种方法可以移动默认的accessoryView,但它非常hacky。所以它可能会在新sdk到来的某一天停止工作。
使用风险自负(此代码段向左移动任何accessoryView 8像素,将其插入内部 - (void)所需uitableviewcell子类的layoutSubviews方法):
if (self.accessoryView) {
r = self.accessoryView.frame;
r.origin.x -= 8;
self.accessoryView.frame = r;
} else {
UIView* defaultAccessoryView = nil;
for (UIView* subview in self.subviews) {
if (subview != self.textLabel &&
subview != self.detailTextLabel &&
subview != self.backgroundView &&
subview != self.contentView &&
subview != self.selectedBackgroundView &&
subview != self.imageView) {
defaultAccessoryView = subview;
break;
}
}
r = defaultAccessoryView.frame;
r.origin.x -= 8;
defaultAccessoryView.frame = r;
}