如何像iOS7一样制作UITableView单元格分隔符?

时间:2013-10-14 14:34:13

标签: objective-c uitableview ios7

在iOS 7中,默认UITableViewCell separator从左侧稍微向下切割,可以显示单元格的imageView

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

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

我希望在我的iPad方向为Portrait时更改它。

所以我尝试在旋转事件中跟随代码

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。

我该怎么做?

3 个答案:

答案 0 :(得分:11)

您的意思是手动界面生成器?如果是这种情况,请在IB中单击您的UITableViewCell并转到第三个面板,在Separator insets中选择custom,您可以输入左右值。 Separator insets

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

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

然后例如:

self.tableViewMain.separatorInset = UIEdgeInsetsMake (0, 15, 0,0);

答案 1 :(得分: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;
}

答案 2 :(得分:1)

你应该在左边插入的位置负值

self.tableView.separatorInset = UIEdgeInsetsMake (0, -15, 0,0);