iPhone,我可以为表格提供自定义UITableView单元格和背景图像吗?

时间:2010-11-04 18:28:36

标签: iphone xcode uitableview

我想让我的桌子内容在我的背景图像上滚动。

或者我不介意细胞是否可以拍摄背景图像的块,以便背景保留在细胞后面,但随着细胞滚动。

这可能吗?如果是这样的话?

我尝试添加图片视图并将我的单元格和表格背景颜色设置为清除。

这是我的代码。

http://www.kidsmaskfactory.com/code/testback.zip你能来看看吗?

6 个答案:

答案 0 :(得分:1)

如前所述,问题在于您的代码。从您提供的代码示例(http://kidsmaskfactory.com/code/testback.zip)开始,您需要进行2次修改:

1)将您的RootViewController的父类从UITableViewController更改为UIViewController。 2)将文件所有者的视图属性设置为您的视图而不是您的表格视图。

此重新编译后&运行你的代码&它应该给你以下输出。

alt text

答案 1 :(得分:0)

尝试将UITableView的backgroundView更改为您想要的任何内容 - 可能是包含您图片的UIImageView。

这将为您提供背景图片。现在的问题是如何使用表格滚动背景图像。我不确定但有两个可能性:

  1. 由于UITableView是UIScrollView的子类,因此backroundView将与表的其余部分一起滚动,您无需执行任何操作。

  2. backgroundView是一个单独的视图,不是从UIScrollView派生的。然后,您需要实现UIScrollViewDelegate来拦截滚动位置的更改,并手动将这些更改应用到您的backgroundView。

答案 2 :(得分:0)

Hi Jules按照以下步骤将背景图像设置为tableview。这个有效!!我试过了。

<强> STEP-1

在你的xib中放置你的tableview并将它的委托和数据源字段分配给File的所有者。

<强> STEP-2

现在将imageView拖到您的tableview上,并将其调整为View的大小。使用检查器选择要在后台显示的图像。

<强> STEP-3

选择imageView并转到菜单“布局 - &gt;发送到后面”

<强> STEP-4

选择您的tableview并从Inspector中将背景颜色设置为“clear color”。

希望这能解决你的问题。

答案 3 :(得分:0)

我刚下载了您的测试项目,这就是我的想法。

你以奇怪的方式制作了你的rootviewcontroller。它是UITableViewController的一个特化,但你已经添加了自己的UITableView作为子视图,以及你的UIImageView。有一种更简单的方法。

您的RootViewController应该只是常规的UITableViewController派生类,而Interface Builder中的结构不会发生任何变化。如果要在UInterface Builder中定义UIImageView,请将UIImageView拖入XIB,但不要将其作为UITableView的子项。使它成为顶级对象。将它连接到您在代码中添加到RootViewController的新IBOutlet:

@interface RootViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {

    IBOutlet UIImageView* _backgroundImageView;

}

确保在Interface Builder中的UIImageView中设置图像。

在RootViewController.m文件中,添加以下内容:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tableView.backgroundView = _backgroundImageView;
}

我修改了您的测试项目并在此处发布:http://www.codeveloper.com/TestCustomCellWithViewBackground-TomSwift.zip

答案 4 :(得分:0)

step1:将RootViewController.h更改为:

#import <UIKit/UIKit.h>

@interface RootViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> {
    IBOutlet UITableView *reportTableView;

}

@end

<强>步骤2:

在RootViewController.m中:

添加此方法:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    reportTableView.backgroundColor = [UIColor clearColor];

    // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
    // self.navigationItem.rightBarButtonItem = self.editButtonItem;
}

第3步:

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

变化:

if (cell == nil) 
{
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"Cell"
                                                             owner:nil options:nil];

    for (id currentObject in topLevelObjects) 
    {
        if ([currentObject isKindOfClass:[UITableViewCell class]]) 
        {
            cell = ((ReportCell *) currentObject);
            break;
        }
    }

    cell.backgroundColor = [UIColor clearColor];
}

<强>步骤4:

转到Nib文件

- &GT;将reportTableView插座设置为tableview。

- &GT;将视图出口设置为视图。

这将解决您的问题。

答案 5 :(得分:-1)

将图像视图放在表格视图后面。并将UITableView的背景颜色更改为clear([UIColor clearColor])。