UITableViewCell的背景

UITableViewCell的背景,第1张

概述UITableViewCell是一个很常用的View,通常我们都是直接使用它。 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"CellIdentif

UItableVIEwCell是一个很常用的VIEw,通常我们都是直接使用它。

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {     static Nsstring *cellIDentifIEr = @"CellIDentifIEr";     UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:cellIDentifIEr];    if (!cell)    {        cell = [[[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleSubTitle reuseIDentifIEr:cellIDentifIEr] autorelease];    }     cell.textLabel.text = [Nsstring stringWithFormat:@"line: %d",indexPath.row];     return cell;}



 

得到这个效果:

现在我们给tableVIEwCell加上点背景色:

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {     static Nsstring *cellIDentifIEr = @"CellIDentifIEr";     UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:cellIDentifIEr];    if (!cell)    {        cell = [[[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleSubTitle reuseIDentifIEr:cellIDentifIEr] autorelease];    }     cell.textLabel.text = [Nsstring stringWithFormat:@"line: %d",indexPath.row];    // cell.backgroundcolor = [UIcolor bluecolor];    cell.contentVIEw.backgroundcolor = [UIcolor bluecolor];    return cell;}

我们不应该直接使用cell.backgroundcolor。Cell本身是一个UIVIEw,我们所看到的部分其实只是它的一个SubvIEw,也就是cell.contentVIEw。所以,如果直接改变cell本身的背景色,依然会被cell.contentVIEw给覆盖,没有效果。

不过,通过cell.contentVIEw.backgroundcolor来改变背景色还不是最好的Practice. 如果通过

tableVIEw.editing = YES;

进入Edit模式,就会出现问题。

Cocoa提供的按钮背景色为透明。因为ContentVIEw被移开,下面是tableVIEw的颜色,已经不是cell的一部分了。

所以,最好的方式应该是通过cell.backgroundVIEw来改变cell的背景。按照文档说明,backgroundVIEw始终处于cell的最下层,所以,将cell里的其它subvIEw背景设为[UIcolor clearcolor],以cell.backgroundVIEw作为统一的背景,应该是最好的方式。

- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath {     static Nsstring *cellIDentifIEr = @"CellIDentifIEr";     UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:cellIDentifIEr];    if (!cell)    {        cell = [[[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleSubTitle reuseIDentifIEr:cellIDentifIEr] autorelease];    }     cell.textLabel.text = [Nsstring stringWithFormat:@"line: %d",indexPath.row];    cell.textLabel.backgroundcolor = [UIcolor clearcolor];     UIVIEw *backGrdVIEw = [[UIVIEw alloc] initWithFrame:cell.frame];    backGrdVIEw.backgroundcolor = [UIcolor bluecolor];    cell.backgroundVIEw = backGrdVIEw;    [backGrdVIEw release];     return cell;}

效果:

总结

以上是内存溢出为你收集整理的UITableViewCell的背景全部内容,希望文章能够帮你解决UITableViewCell的背景所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1055079.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存