iPhone SDK提供了默认的几个TableView样式,但是如果想提供更个性化的样式就需要自己定义。 比如添加背景
如上图的样子。 其实自定义table view的样子很简单,无非就是把table view和table view cell的背景变成透明的,然后在指定视图和cell的背景图片(当然,也可以指定table view的背景图片)
-
-
@interface MainViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
-
{
-
UITableView *theTableView;
-
}
-
先建立Controller,注意是继承自UIViewController而不是UITableViewController
实现类
-
-
- ( id )init
-
{
-
if (self = [super init ] )
-
{
-
self.view = [ [ [UIView alloc ] initWithFrame: [ [UIScreen mainScreen ] applicationFrame ] ] autorelease ];
-
-
// Setup the background
-
UIImageView *background = [ [UIImageView alloc ] initWithImage: [UIImage imageNamed:@ "background.png" ] ];
-
[self.view addSubview:background ];
-
[background release ];
-
-
// Create table view
-
theTableView = [ [UITableView alloc ] initWithFrame:CGRectMake ( 0, 11, 320, 460 ) style: UITableViewStylePlain ];
-
[theTableView setDelegate:self ];
-
[theTableView setDataSource:self ];
-
-
// This should be set to work with the image height
-
[theTableView setRowHeight: 68 ];
-
-
// Transparent, so we can see the background
-
[theTableView setBackgroundColor: [UIColor clearColor ] ];
-
[theTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone ];
-
[theTableView setIndicatorStyle:UIScrollViewIndicatorStyleWhite ];
-
-
[self.view addSubview:theTableView ];
-
-
}
-
return self;
-
}
-
代码中的注释已经很清楚了。 先设置视图的背景,再设定table view的背景
再看另外一断代码,设置了cell的背景,注意,这里面使用了自定义的cell类CustomCell
-
-
- (UITableViewCell * )tableView: (UITableView * )tableView cellForRowAtIndexPath: (NSIndexPath * )indexPath
-
{
-
CustomCell *cell= [ [ [CustomCell alloc ] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: nil ] autorelease ];
-
-
// Default to no selected style and not selected
-
cell.selectionStyle = UITableViewCellSelectionStyleNone;
-
-
// Set the image for the cell
-
[cell setTheImage: [UIImage imageNamed: [ NSString stringWithFormat:@ "Arrows%d.png", indexPath.row + 1 ] ] ];
-
-
return cell;
-
}
-
我们再看看如何定义自定义的cell
-
-
#import <UIKit/UIKit.h>
-
-
@interface CustomCell : UITableViewCell
-
{
-
UIImageView *image;
-
}
-
-
- ( void ) setTheImage: (UIImage * )icon;
-
-
@end
-
再看实现类
-
-
#import "CustomCell.h"
-
-
@implementation CustomCell
-
-
/*—————————————————————————
-
*
-
*————————————————————————–*/
-
{
-
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier ] )
-
{
-
// Cells are transparent
-
[self.contentView setBackgroundColor: [UIColor clearColor ] ];
-
}
-
-
return self;
-
}
-
-
/*—————————————————————————
-
*
-
*————————————————————————–*/
-
- ( void ) setTheImage: (UIImage * ) icon
-
{
-
// Alloc and set the frame
-
image = [ [UIImageView alloc ] initWithImage:icon ];
-
image.frame = CGRectMake ( 0, 0, 286, 68 );
-
-
// Add subview
-
[self.contentView addSubview:image ];
-
}
-
-
/*—————————————————————————
-
*
-
*————————————————————————–*/
-
- ( void )setSelected: ( BOOL )selected animated: ( BOOL )animated
-
{
-
[super setSelected:selected animated:animated ];
-
if (selected == YES )
-
image.alpha = . 5;
-
else
-
image.alpha = 1;
-
}
-
-
/*—————————————————————————
-
*
-
*————————————————————————–*/
-
- ( void )dealloc
-
{
-
[image release ];
-
[super dealloc ];
-
}
-
-
@end
-