UITableViewCell子类 - 特定位置的背景

时间:2010-07-19 08:33:06

标签: iphone objective-c uitableview

我刚刚创建了一个uitableviewcell的子类,并在我的cellforrowatindexpath中使用它。

添加一个简单的uilabel后,我的单元格看起来像这样: alt text

我的目标是为细胞设置样式

alt text

但是怎么做?首先,我想简单地添加一个uiimageview并将其发送到后面,并带有圆角和箭头。

但实际上这是三种不同类型的细胞。一个用于顶部,一个用于中间部分,一个用于部分的底部。

如何在uitableviewcell的一个子类中处理这三个“自定义”单元格的任何提示?感谢所有提示!

的choise

//如果有什么不清楚,请发表评论! ;)

3 个答案:

答案 0 :(得分:1)

好的,现在我明白你想重新设计一个分组的表视图。 我做了一个示例应用程序:Download (mediafire.com 55kb)

这里的代码:

#define numberOfRows 5

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 2;
}

- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section {
    return numberOfRows;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if (indexPath.row == 0)
        return 42;
    else
        return 41;
}

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

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCustomCellID];
    if (cell == nil)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCustomCellID] autorelease];

        UIImage *theIMG;
        if (indexPath.row == 0) // you have to make a fourth image if only one cell exist
            theIMG = [UIImage imageNamed:@"1.png"];
        else if (indexPath.row == numberOfRows -1) // the last cell
            theIMG = [UIImage imageNamed:@"3.png"];
        else
            theIMG = [UIImage imageNamed:@"2.png"];

        UIImageView *mg = [[UIImageView alloc]initWithImage:theIMG];
        cell.backgroundView = mg;
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
    }
    // check out how large your image should be if the table is not over the full screen
    //NSLog(@"Row:%i Width:%f", indexPath.row, cell.backgroundView.frame.size.width);

    cell.backgroundColor = [UIColor clearColor];
    cell.textLabel.text = @"TEXT";
    return cell;
}

答案 1 :(得分:0)

使用CustomCell可能会解决您的问题。了解如何将UILabel和UIImage添加到单元格中。

http://iphone.zcentric.com/2008/08/26/uiimageview-in-a-custom-cell/

答案 2 :(得分:0)

您可以使用图层编辑特定的UI元素。 (默认TableView,未分组)

myTable.layer.cornerRadius = 7.0;
myTable.layer.borderWidth = 1;
myTable.backgroundColor = [UIColor colorWithRed:0.89 green:0.89 blue:0.89 alpha:1.0];

让.layer工作你应该#import <QuartzCore/CAAnimation.h>并链接QuarzCore.framework(项目目标 - &gt;一般 - &gt;“添加”-Button)

对于箭头,您应该使用图像并替换默认的公开按钮。 我没有时间做其他所有事情,但我相信如果有些事情不对,你会再问一次;)