给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

还是很简单的吧。


本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.prosight.me/复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Swift - 给TableView添加编辑功能(删除,插入)

    1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第...

    Python疯子
  • iOS 给Tableview 没有数据的时候添加占位图

    一般iOS在UITableView没有数据的时候为了界面好看一点,UI会给这些没有数据的页面设计一些占位图,有的时候是纯图片,有的时候会有一些按钮操作。

    赵哥窟
  • PDF怎么加背景颜色?如何给PDF文件添加背景

    PDF怎么加背景颜色?经常办公的朋友肯定会接触到很多的PDF文件吧,小编每天上班都快被PDF文件淹没了,每天查看那么多的文件也会有视觉疲劳的,想要给PDF文件添...

    用户5843321
  • 给网页添加自适应背景图

    有时候需要给网页加背景图,于是在网上找了一段CSS代码,上一篇利用JS转跳网址里面就加入了这段CSS

    今天风真的好大好大啊
  • 使用格式工厂给视频添加背景音乐

    Jerry最近的公众号文章嵌入了一些技术视频,这些技术视频发布在腾讯视频上,但是因为视频没有声音,所以导致上传失败,联系了腾讯视频客服后,得知视频必须包含背景音...

    Jerry Wang
  • 网站背景添加海浪背景

    HTML加入到网站随意一个地方,我是加到头部的,因为有些时候放在下面会被其他元素覆盖掉

    cmsboy
  • iOS tableView表视图设置背景图片

    经常遇到要给tableView设置背景图片的问题,但如果直接设置背景  backgroundView的话,背景图不会显示,原因是  tableView上的cel...

    聚名12255
  • 给网页添加一个基于canvas绘制的背景效果

    一个非常不错的网页背景效果,跟随鼠标变幻的动态线条,一个基于canvas绘制的网页背景效果。

    Xcnte
  • 给select设置背景

    在网页开发过程中,经常会遇到添加背景的的问题,其他的标签都好说,难度比较大的就是给form表单元素添加背景。下面我来给大家介绍一下如何给form表单元素添加背景...

    OECOM
  • WPF 如何给 Grid 的某一行添加背景色

    其实在 WPF 里面是不存在单独设置 Grid 的某一行的配色,但是想要达到这个视觉效果,可以通过 Border 配合做到

    林德熙
  • python给视频添加背景音乐并改变音量的具体方法

    https://stackoverflow.com/questions/13780736/ffmpeg-unable-to-find-a-suitable-ou...

    砸漏
  • 给接口添加缓存

    在项目中,我们通过引入 Redis 服务器来做接口的缓存,我们创建一个 SpringBoot 的项目,先来添加其依赖,依赖如下:

    码农UP2U
  • 给intellij IDEA设置背景颜色[通俗易懂]

    先打开intellij IDEA 之后在File再点Settings(如图)

    全栈程序员站长
  • Hexo添加动态线条效果背景

    效果如本站所示,我看过一些博客,有很多一部分都有这个动线效果背景。于是查一查相关文章自己也搞起来。

    花猪
  • 给WordPress添加HTTPS

    HTTPS是超文本传输协议,用来建立浏览器和服务器之间的通讯服务,HTTP在传输请求头报文是明文传输,这将带来很多的隐患,HTTPS因此诞生。

    用户2475223
  • MFC添加背景图片

    1.在资源里导入一个bmp图片假设名称为IDB_BITMAP1 实现OnPaint方法 CPaintDC dc(this); CRect ...

    lpxxn
  • 为TableView添加内边距以让Cell具有“穿透”效果

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823

扫码关注腾讯云开发者

领取腾讯云代金券