UITableView can scroll background view

原创 2012年03月29日 17:13:17

UITableView的backgroundView属性可以设置其背景,但是背景不能随Table的拖动而移动,也就是固定不移动的。有没有办法让其背景也随拖动而移动呢。深入研究了一下UITableView api,好像没有提供这样的api。难道不能实现? google了一天也没有得到好的解决办法。  已经半夜一点过了,问题还没解决,睡不着啊。不知道是不是程序员的灵感时段总是在半夜,在半夜两点的时候,我突然想到了一个办法,试一试给UITableView加一层background layer as background view。于是试了一试,还真有点眉目了。顿时激动了(注意不是鸡动)大笑,看来上天眷顾我,这下可以睡个程序员的美容睡了。


原理就是在UITableView的layer加一层image的layer作为背景。代码如下:

        CALayer *bgLayer = [CALayer layer];
        bgLayer.contents = (id)[UIImage imageNamed:@"setting-main-bg"].CGImage;
        bgLayer.anchorPoint = CGPointZero;
        bgLayer.bounds = CGRectMake(0, 0,
                                    self.scrollBgTableView.contentSize.width ,
                                    self.scrollBgTableView.contentSize.height + 50);
        CGRect rect = bgLayer.frame;
        rect.origin.y = -50;
        bgLayer.frame = rect;
        
        [self.scrollBgTableView.layer addSublayer:bgLayer];
        bgLayer.zPosition = -5; //这一句一定要,数值得小于0都可以

scrollBgTableViewj是UITableView类型。在这儿提醒最重要的一步,记得将UITableView的backgroundColor设为clearColor, 不然上面加的图层将被backgroundColor图层覆盖。

scrollBgTableView.backgroundColor = [UIColor clearColor];


UITableView还有一个比较有用的功能,就是移动列表在Scroll中的位置。如:

[self.scrollBgTableView setContentInset:UIEdgeInsetsMake(50,0,0,0)];

文字表达不清楚,大家可以用这句代码设置自己的UITableView试试,就知道它的作用了。


有了上面两个知识点,那么就可以做一个可移动的背景了。 下面我手把手教大家如何实现,每一步都必不可少,看清楚了。


1.  set the background of the UITableView to clear Color

scrollBgTableView.backgroundColor = [UIColor clearColor];

2. add image layer as the background layer

        CALayer *bgLayer = [CALayer layer];
        bgLayer.contents = (id)[UIImage imageNamed:@"setting-main-bg"].CGImage;
        bgLayer.anchorPoint = CGPointZero;
        bgLayer.bounds = CGRectMake(0, 0,
                                    self.scrollBgTableView.contentSize.width ,
                                    self.scrollBgTableView.contentSize.height + 50);
        CGRect rect = bgLayer.frame;
        rect.origin.y = -50;
        bgLayer.frame = rect;
        
        [self.scrollBgTableView.layer addSublayer:bgLayer];
        bgLayer.zPosition = -5; //这一句一定要,数值得小于0都可以

好了,如果不行,那只有发源码工程出来了。微笑


源码下载






















版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS_开发中遇到的那些问题_6

【自编号:676】【app动态交互设计合辑】【进入网址】 【2015-10-28 18:41:33 by pre_eminent】 【自编号:675】【常用物理动画介绍】【查看原文】 【20...
  • u012576807
  • u012576807
  • 2015年12月14日 20:30
  • 2432

Unity UGUI 利用Scroll View动态生成列表

Unity UGUI 利用Scroll View动态生成列表 本人菜鸟一枚,通过博客记录自己踩过的坑,如果这篇文章有幸被您看到,并对您有所帮助,这将是我的荣幸。如果您有更好的想法,希望您不吝...
  • Du_youlu
  • Du_youlu
  • 2017年07月18日 21:29
  • 991

庖丁解牛之ScrollView

庖丁解牛之ScrollView前言ScrollView可以说是android里最简单的滑动控件,但是其中也蕴含了很多的知识点。今天尝试通过ScrollView的源码来了解ScrollView内部的细节...
  • litefish
  • litefish
  • 2016年08月05日 12:35
  • 8494

Unity原生UGUI之Scroll View坑的地方

这两天在看Unity官方GUI,早在Unity4.6版本官方就发布了原生GUI,号称效率大大提高,而且听一些同学说虽然有一些坑,但是比较灵活,效率高,还有一个最重要的一点是有官方支持,所有有取代NGU...
  • andyqingliu
  • andyqingliu
  • 2017年01月16日 11:08
  • 3206

Unity UI(七):交互式控件之Scroll Rect和ScrollView

Scroll RectUnity并没有提供现成的滚动区域,而且需要借助Scroll Rect组件来实现。1.创建Scroll Rect(1)创建Panel,添加Scroll Rect组件 (2)设定...
  • wkhabc
  • wkhabc
  • 2016年09月03日 01:09
  • 2831

u3d实现滚动下拉(scrollview实现)

项目需要实现一个类似下拉的功能,就是在固定的显示区域无法完全显示你需要展示的内容,这时候就需要下拉功能了。 刚开始我想的是用listview来实现,因为也是刚刚开始接触的u3d,对它的各个插件也不什...
  • qq_18536721
  • qq_18536721
  • 2015年10月14日 14:30
  • 1282

iOS开发:UISCrollView与UITableView嵌套使用终极解决方案

IOS开发~UISCrollView与UITableView嵌套使用终极解决方案  问题由来:项目需要做类似网易新闻的那种UIScrollView上放多个UITableView的效果,其中UITa...
  • Kevindongkun
  • Kevindongkun
  • 2015年09月16日 22:24
  • 8335

Scroll(二)滑动的实现方式

之前说了android的坐标系和触控事件,下面看 下如何使用系统的方法来实现动态的修改一个view的坐标。 大概思路就是触摸view时,记下当前的坐标;当手指移动时,记下移动后的坐标,从而获取到偏...
  • lucky9322
  • lucky9322
  • 2016年01月29日 17:34
  • 550

swift里UITableView简单的用法

swift里UITableView简单的用法 删除、移动等等
  • syg90178aw
  • syg90178aw
  • 2015年07月23日 15:32
  • 5297

iOS优化内存的横向ScrollView

原理就是ScrollView中同时只有1、2、3张图片,每次翻动结束后,重新设置这三张图片,如1、2、3,原来是2,向右翻动结束减速后将1、2、3换成2、3、4,由于是结束滚动后替换的,所以看上去跟平...
  • u011349387
  • u011349387
  • 2015年08月20日 09:28
  • 443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView can scroll background view
举报原因:
原因补充:

(最多只允许输入30个字)