ios列表性能优化tips

layer.cornerRadius画圆角,会离屏渲染影响性能。

使用CoreGraphics画圆角

在UIImage分类中实现

#define StrokeRoundedImages 0

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
- (UIImage *)makeCircularImageWithSize:(CGSize)size
{

CGRect circleRect = (CGRect) {CGPointZero, size};

// begin the image context since we're not in a drawRect:
UIGraphicsBeginImageContextWithOptions(circleRect.size, NO, 0);

// create a UIBezierPath circle
UIBezierPath *circle = [UIBezierPath bezierPathWithRoundedRect:circleRect cornerRadius:circleRect.size.width/2];

// clip to the circle
[circle addClip];

// draw the image in the circleRect *AFTER* the context is clipped
[self drawInRect:circleRect];

// create a border (for white background pictures)

circle.lineWidth = 1;
[[UIColor darkGrayColor] set];
[circle stroke];
#endif

// get an image from the image context
UIImage *roundedImage = UIGraphicsGetImageFromCurrentImageContext();

// end the image context since we're not in a drawRect:
UIGraphicsEndImageContext();

return roundedImage;
}