0

在 iOS 7 中,默认UITableViewCell separator是从左边一点点切割,可以显示单元格的imageView.

我可以使用以下代码更改为全尺寸。

[self.tableViewMain setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];

当我的 iPad 方向是纵向时,我想更改它。

所以我在旋转事件中尝试了以下代码

if(UIInterfaceOrientationIsLandscape(self.interfaceOrientation) ||(UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)))
    {
        [self.tableViewMain setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];
    }

    else
    {
        [self.tableViewMain setSeparatorInset:UIEdgeInsetsMake(15, 0, 0, 0)];
    }

我想像 iOS7 Cell Separator 一样手动操作。

我该怎么做?

4

3 回答 3

11

您的意思是手动 Interface Builder ?如果是这种情况,请单击 IB 中的 UITableViewCell 并转到第三个面板,在 Separator insets 中选择自定义,您可以放置​​左右值。 分离器插图

编辑:如果您想通过代码执行此操作,请参阅 UIEdgeInsets 结构的文档: UIEdgeInsets 定义视图的插入距离。

typedef struct {
   CGFloat top, left, bottom, right;
} UIEdgeInsets;

然后例如:

self.tableViewMain.separatorInset = UIEdgeInsetsMake (0, 15, 0,0);
于 2013-10-14T14:44:01.837 回答
2

干得好。

[self.tableViewMain setSeparatorInset:UIEdgeInsetsMake(15, 0, 0, 0)];

编辑:

上面的答案是错误的。添加自定义UIView将解决此问题。你cellForRowAtIndexPath应该撒谎

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    UIView *lineView;

    if (cell == nil)
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];

        lineView = [[UIView alloc] initWithFrame:CGRectMake(15, cell.contentView.frame.size.height - 1.0, cell.contentView.frame.size.width, 1)];

        [cell.contentView setFrame:CGRectMake(0, 0, cell.contentView.frame.size.width, cell.contentView.frame.size.height-1)];

        [cell.textLabel setBackgroundColor:[UIColor clearColor]];

        lineView.backgroundColor = [UIColor darkGrayColor];

        [cell.contentView addSubview:lineView];

        [lineView release]; // IGNORE IF USING ARC
    }

    [cell.textLabel setText:@"YOUR_TEXT"];


    return cell;
}
于 2013-10-14T14:50:25.197 回答
1

你应该在左插图的地方负值

self.tableView.separatorInset = UIEdgeInsetsMake (0, -15, 0,0);
于 2014-03-15T12:10:17.703 回答