1

我正在创建一个自定义动态表,用于在单击按钮时创建一个下拉列表,它工作正常。现在表格的所有单元格都是纯白色的。我可以为表格添加背景,但无法为单元格添加背景。这是我在其中创建表的一段代码。在此以及突出显示的状态下,我将如何将背景图像添加到我的单元格?是否也可以自定义其边框?

- (void)createMenuTable {

    int totalItems = [self.menuArray count];

    float originalHeight = (MENU_CELL_HEIGHT * totalItems);

    float tableHeight = (originalHeight > self.frame.size.height)? (self.frame.size.height - (originalHeight > self.frame.size.height)): originalHeight;

    float xOrigin = 0;

    if (self.menuBarPosition == POSITION_RIGHT) {
        xOrigin = self.frame.size.width - MENU_TABLE_WIDTH;
    }

    CGRect tableFrame = CGRectMake(xOrigin, 0, MENU_TABLE_WIDTH, 0);
    menuOptionsTableView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStylePlain];
    [menuOptionsTableView setDelegate:self];
    [menuOptionsTableView setDataSource:self];
    [menuOptionsTableView setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
    [self addSubview:menuOptionsTableView];

    tableFrame.size.height = tableHeight;

    [UIView animateWithDuration:0.35 animations:^{
        menuOptionsTableView.frame = tableFrame;
    } completion:^(BOOL finished) {

    }];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ParentCellIdentifier = @"MenuCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ParentCellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ParentCellIdentifier];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];
    }

    cell.textLabel.text = (self.menuArray)[indexPath.row];
    [cell.textLabel setTextAlignment:NSTextAlignmentCenter];
    [cell.textLabel setFont:MY_FONT_BOLD(14)];

    return cell;
}
4

3 回答 3

1

将此代码添加到您的cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

   static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell;

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


NSArray *cellSubs = cell.contentView.subviews;
for (int i = 0 ; i < [cellSubs count] ; i++)
{
    [[cellSubs objectAtIndex:i] removeFromSuperview];
}
    cell.textLable.text = "ABC";
    UIImageView *bgView = [[UIImageView alloc]initWithFrame:cell.backgroundView.frame];
        [bgView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
        bgView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
        bgView.image = [UIImage imageNamed:@"cell_bg.png"];
        [cell setBackgroundView:bgView];

     return cell;
}

选定的单元格背景

cell.selectionStyle = UITableViewCellSeparatorStyleSingleLine;
 UIView *bgColorView = [[UIView alloc] init];
    [bgColorView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Selectedcell_bg.png"]]];
    [cell setSelectedBackgroundView:bgColorView];

编辑

用于制作圆角

首先添加 -->QuartzCore.framework到你的项目 & 在你的 ViewController.m 文件中 -> 导入头文件

#import <QuartzCore/CALayer.h>

..

CALayer *cellImageLayer = bgView.layer;
    [cellImageLayer setCornerRadius:9];
    [cellImageLayer setMasksToBounds:YES];
于 2013-10-12T10:05:56.430 回答
1

在以下方法中添加一行,如下所示。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *ParentCellIdentifier = @"MenuCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ParentCellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ParentCellIdentifier];
        [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

        UIImageView * img = [[UIImageView alloc] initWithFrame:cell.contentView.bounds];
        [img setImage:[UIImage imageNamed:@"YOUR_IMAGE.PNG"]];
        [img setHighlightedImage:[UIImage imageNamed:@"YOUR_HIGHLIGHTED_IMAGE.PNG"]];
        [img setContentMode:UIViewContentModeScaleToFill];
        [cell.contentView addSubview:img];
        [img release];//FOR NON ARC

    }

    cell.textLabel.text = (self.menuArray)[indexPath.row];
    [cell.textLabel setTextAlignment:NSTextAlignmentCenter];
    [cell.textLabel setFont:MY_FONT_BOLD(14)];
    return cell;
}

这将轻松帮助您。

于 2013-10-12T11:03:07.497 回答
0

尝试这样的事情。

UIView * bgView = [[UIView alloc] initWithFrame:correctFrame];
[bgView setBackgroundColor:[UIColor redColor]];
[cell addSubview:bgView];

希望这对你有用。

麦克风。

于 2013-10-12T10:07:13.843 回答