iPhone应用中给TableView添加背景是本文呢要介绍的内容,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
- /*—————————————————————————
- *
- *————————————————————————–*/
- -(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
- {
- 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
还是很简单的吧。
小结:iPhone应用中给TableView添加背景的内容介绍完了,希望通过本文的学习对你能有所帮助!