ios7的UITableView实现ios6的圆角效果

如果想在ios7的UITableView实现ios6中的圆角效果,可以用如下的办法:

1.重写UITableView的一个方法,如下:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath
*)indexPath

{

    if
([cell respondsToSelector:@selector(tintColor)]) {

        if
(tableView == self.tableView) {

            CGFloat cornerRadius = 5.f;

            cell.backgroundColor = UIColor.clearColor;

            CAShapeLayer *layer = [[CAShapeLayer alloc] init];

            CGMutablePathRef pathRef = CGPathCreateMutable();

            CGRect bounds = CGRectInset(cell.bounds, 10, 0);

            BOOL
addLine = NO;

            if
(indexPath.row == 0 && indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

                CGPathAddRoundedRect(pathRef, nil, bounds, cornerRadius, cornerRadius);

            } else
if (indexPath.row == 0) {

                CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds));

                CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds), CGRectGetMidX(bounds), CGRectGetMinY(bounds), cornerRadius);

                CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

                CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds));

                addLine = YES;

            } else
if (indexPath.row == [tableView numberOfRowsInSection:indexPath.section]-1) {

                CGPathMoveToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMinY(bounds));

                CGPathAddArcToPoint(pathRef, nil, CGRectGetMinX(bounds), CGRectGetMaxY(bounds), CGRectGetMidX(bounds), CGRectGetMaxY(bounds), cornerRadius);

                CGPathAddArcToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMaxY(bounds), CGRectGetMaxX(bounds), CGRectGetMidY(bounds), cornerRadius);

                CGPathAddLineToPoint(pathRef, nil, CGRectGetMaxX(bounds), CGRectGetMinY(bounds));

            } else
{

                CGPathAddRect(pathRef, nil, bounds);

                addLine = YES;

            }

            layer.path = pathRef;

            CFRelease(pathRef);

            layer.fillColor = [UIColor colorWithWhite:1.f alpha:0.8f].CGColor;

            if
(addLine == YES) {

                CALayer *lineLayer = [[CALayer alloc] init];

                CGFloat lineHeight = (1.f / [UIScreen mainScreen].scale);

                lineLayer.frame = CGRectMake(CGRectGetMinX(bounds)+10, bounds.size.height-lineHeight, bounds.size.width-10, lineHeight);

                lineLayer.backgroundColor = tableView.separatorColor.CGColor;

                [layer addSublayer:lineLayer];

            }

            UIView *testView = [[UIView alloc] initWithFrame:bounds];

            [testView.layer insertSublayer:layer atIndex:0];

            testView.backgroundColor = UIColor.clearColor;

            cell.backgroundView = testView;

        }

    }

}

原作者:http://stackoverflow.com/questions/18822619/ios-7-tableview-like-in-settings-app-on-ipad

2.在storyboard里面设置UITableView的样式,如下图:

具体情况可以按各自的需要来。

不过更多适配ios6的时候还是按照各自的模式来的,需要让美工准备两套图片,一份ios6的,一份ios7的。

时间: 2024-10-29 19:07:56

ios7的UITableView实现ios6的圆角效果的相关文章

实现iOS7上tableView的切割线像iOS6中的效果

iOS7上tableView的切割线左边短了一点,要实现和iOS6中的效果还是有方法的,UITableView头文件中个属性: @property (nonatomic)         UIEdgeInsets                separatorInsetNS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators 在viewDidLoad里

实现iOS7上tableView的分割线像iOS6中的效果

iOS7上tableView的分割线左边短了一点,要实现和iOS6中的效果还是有方法的,UITableView头文件里个属性: @property (nonatomic)         UIEdgeInsets                separatorInsetNS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR; // allows customization of the frame of cell separators 在viewDidLoad里

使用box-shadow属性实现圆角效果代码实例

使用box-shadow属性实现圆角效果代码实例:通常实现圆角效果我们使用border-radius,其实我们也可以使用box-shadow属性来实现.两个属性的具体用法这里就不多介绍了,具体可以参阅以下两个文章:(1).圆角效果可以参阅CSS3实现圆角效果一章节.(2).box-shadow可以参阅CSS3的box-shadow属性用法详解一章节.代码实例: <!DOCTYPE html> <html> <head> <meta charset=" u

input文本框圆角效果代码实例

input文本框圆角效果代码实例:本章节分享一段代码实例,它实现了将input文本框设置为圆角的功能.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>蚂蚁部落</tit

设置Label的圆角效果

设置Label的圆角效果 // 设置Label为圆角 // 设置四周圆角的半径 lblMsg.layer.cornerRadius = 5; // 把多余的部分裁剪掉. lblMsg.layer.masksToBounds = YES;

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力)

CSS圆角效果 -webkit-border-radius(CSS3中border-radius隐藏的威力) 来源:互联网 作者:佚名 时间:03-28 14:17:14 [大 中 小] border-radius:用这个属性能实现圆角边框的效果.现在只有Mozilla/Firefox 和 Safari 3支持该属性. -webkit-border-radius:苹果:谷歌,等一些浏览器认,因为他们都用的是webkit内核: -moz-border-radius:moz这个属性 主要是专门支持M

ss3来实现边框圆角效果

经常看到别人的网站有个边框来修饰文字区域,类似圆角矩形把文字环绕起来,特别有感觉,于是就试着用图片边框来修饰,但是用图片过多会拉慢网页的加载速度,能不能使用css3来实现边框圆角效果呢?当然border-radius要在firefox或Safari 和 Chrome才能实现 W3C 很早就制订了实现了 CSS 圆角的 CSS3 属性:border-radius,Firefox 和 Safari 也通过私有属性实现了该功能: 1 <div style=" border-top-left-ra

在ios7真机上和iOS6模拟器上运行是好的,而在iOS6真机上运行却报错

在ios7真机上和iOS6模拟器上运行是好的,而在iOS6真机上运行却报错 解决方法: 或是都设置为yes.. Build Active Architecture Only的意思是只生成适应的指令集 在ios7真机上和iOS6模拟器上运行是好的,而在iOS6真机上运行却报错,码迷,mamicode.com

【代码笔记】给UIImageView加上圆角效果

一,效果图. 二,代码. RootViewController.m #import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNi