热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单数复数php单元格背景颜色,如何自定义分组表视图单元格的背景/边框颜色?...

在iPhoneOS3.0及更高版本中UITableViewCell现在有一个backgroundColor属性,使这非常容易(特别是与[UIColorcolorWit

在iPhone OS 3.0及更高版本中UITableViewCell现在有一个backgroundColor属性,使这非常容易(特别是与[UIColor colorWithPatternImage:]初始化程序结合使用)。但我会在这里为需要它的人留下2.0版的答案......

它比实际应该更难。以下是我必须这样做时的方法:

您需要将UITableViewCell的backgroundView属性设置为自定义UIView,以适当的颜色绘制边框和背景本身。此视图需要能够以4种不同的模式绘制边框,在一个部分中的第一个单元格的顶部倒圆,在截面的最后一个单元格的底部倒圆,在截面中间的单元格没有圆角,并在包含一个单元格的部分的所有4个角上舍入。

不幸的是我无法弄清楚如何自动设置这个模式,所以我不得不在UITableViewDataSource的-cellForRowAtIndexPath方法中设置它。

这是一个真正的PITA,但我已经向Apple工程师证实,这是目前唯一的方法。

更新这是自定义bg视图的代码。有一个绘图错误,使圆角看起来有点滑稽,但我有机会修复它之前我们转移到不同的设计并废弃自定义背景。这仍然可能对你非常有帮助:  CustomCellBackgroundView.h  Created by Mike Akers on 11/21/08.//  Copyright 2008 __MyCompanyName__. All rights reserved.//#import typedef enum  {

CustomCellBackgroundViewPositionTop,

CustomCellBackgroundViewPositionMiddle,

CustomCellBackgroundViewPositionBottom,

CustomCellBackgroundViewPositionSingle} CustomCellBackgroundViewPosition;@interface CustomCellBackgroundView : UIView {

UIColor *borderColor;

UIColor *fillColor;

CustomCellBackgroundViewPosition position;}

@property(nonatomic, retain) UIColor *borderColor, *fillColor;

@property(nonatomic) CustomCellBackgroundViewPosition position;@end  CustomCellBackgroundView.m  Created by Mike Akers on 11/21/08.//  Copyright 2008 __MyCompanyName__. All rights reserved.//#import "CustomCellBackgroundView.h"static void addRoundedRectToPath(CGContextRef context, CGRect rect,

float ovalWidth,float ovalHeight);@implementation CustomCellBackgroundView@synthesize borderColor, fillColor, position;- (BOOL) isOpaque {

return NO;}- (id)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame]) {

// Initialization code

}

return self;}- (void)drawRect:(CGRect)rect {

// Drawing code

CGContextRef c = UIGraphicsGetCurrentContext();

CGContextSetFillColorWithColor(c, [fillColor CGColor]);

CGContextSetStrokeColorWithColor(c, [borderColor CGColor]);

if (position == CustomCellBackgroundViewPositionTop) {

CGContextFillRect(c, CGRectMake(0.0f, rect.size.height - 10.0f, rect.size.width, 10.0f));

CGContextBeginPath(c);

CGContextMoveToPoint(c, 0.0f, rect.size.height - 10.0f);

CGContextAddLineToPoint(c, 0.0f, rect.size.height);

CGContextAddLineToPoint(c, rect.size.width, rect.size.height);

CGContextAddLineToPoint(c, rect.size.width, rect.size.height - 10.0f);

CGContextStrokePath(c);

CGContextClipToRect(c, CGRectMake(0.0f, 0.0f, rect.size.width, rect.size.height - 10.0f));

} else if (position == CustomCellBackgroundViewPositionBottom) {

CGContextFillRect(c, CGRectMake(0.0f, 0.0f, rect.size.width, 10.0f));

CGContextBeginPath(c);

CGContextMoveToPoint(c, 0.0f, 10.0f);

CGContextAddLineToPoint(c, 0.0f, 0.0f);

CGContextStrokePath(c);

CGContextBeginPath(c);

CGContextMoveToPoint(c, rect.size.width, 0.0f);

CGContextAddLineToPoint(c, rect.size.width, 10.0f);

CGContextStrokePath(c);

CGContextClipToRect(c, CGRectMake(0.0f, 10.0f, rect.size.width, rect.size.height));

} else if (position == CustomCellBackgroundViewPositionMiddle) {

CGContextFillRect(c, rect);

CGContextBeginPath(c);

CGContextMoveToPoint(c, 0.0f, 0.0f);

CGContextAddLineToPoint(c, 0.0f, rect.size.height);

CGContextAddLineToPoint(c, rect.size.width, rect.size.height);

CGContextAddLineToPoint(c, rect.size.width, 0.0f);

CGContextStrokePath(c);

return; // no need to bother drawing rounded corners, so we return

}

// At this point the clip rect is set to only draw the appropriate

// corners, so we fill and stroke a rounded rect taking the entire rect

CGContextBeginPath(c);

addRoundedRectToPath(c, rect, 10.0f, 10.0f);

CGContextFillPath(c);

CGContextSetLineWidth(c, 1);

CGContextBeginPath(c);

addRoundedRectToPath(c, rect, 10.0f, 10.0f);

CGContextStrokePath(c); }- (void)dealloc {

[borderColor release];

[fillColor release];

[super dealloc];}@endstatic void addRoundedRectToPath(CGContextRef context, CGRect rect,

float ovalWidth,float ovalHeight){

float fw, fh;

if (ovalWidth == 0 || ovalHeight == 0) {// 1

CGContextAddRect(context, rect);

return;

}

CGContextSaveGState(context);// 2

CGContextTranslateCTM (context, CGRectGetMinX(rect),// 3

CGRectGetMinY(rect));

CGContextScaleCTM (context, ovalWidth, ovalHeight);// 4

fw = CGRectGetWidth (rect) / ovalWidth;// 5

fh = CGRectGetHeight (rect) / ovalHeight;// 6

CGContextMoveToPoint(context, fw, fh/2); // 7

CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);// 8

CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);// 9

CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);// 10

CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // 11

CGContextClosePath(context);// 12

CGContextRestoreGState(context);// 13}



推荐阅读
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
author-avatar
陈苏女士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有