2013-11-09 3 views
0

У меня есть UITableView, где каждая ячейка - это изображение, имя и кнопка, так же как вкладка фаворитов в приложении для телефона в iOS 7. И, как и в приложении для телефона, мне нужно изображение в каждой клетке - круг, а не квадрат.Masking UIImage в TableViewCell

Используя программу PaintCode, я создал UIBezierPath, который я хотел бы разместить над cell.imageView, чтобы изображение выглядело так, будто это круг. Вот что код

//// Color Declarations 
UIColor* fillColor = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 0]; 
UIColor* fillColor2 = [UIColor colorWithRed: 1 green: 1 blue: 1 alpha: 1]; 

//// Bezier Drawing 
UIBezierPath* bezierPath = [UIBezierPath bezierPath]; 
[bezierPath moveToPoint: CGPointMake(36.36, 26.36)]; 
[bezierPath addCurveToPoint: CGPointMake(30.5, 40.5) controlPoint1: CGPointMake(32.45, 30.26) controlPoint2: CGPointMake(30.5, 35.38)]; 
[bezierPath addLineToPoint: CGPointMake(30.5, 20.5)]; 
[bezierPath addLineToPoint: CGPointMake(50.5, 20.5)]; 
[bezierPath addCurveToPoint: CGPointMake(36.36, 26.36) controlPoint1: CGPointMake(45.38, 20.5) controlPoint2: CGPointMake(40.26, 22.45)]; 
[bezierPath closePath]; 
[bezierPath moveToPoint: CGPointMake(70.5, 60.5)]; 
[bezierPath addLineToPoint: CGPointMake(50.5, 60.5)]; 
[bezierPath addCurveToPoint: CGPointMake(64.64, 54.64) controlPoint1: CGPointMake(55.62, 60.5) controlPoint2: CGPointMake(60.74, 58.55)]; 
[bezierPath addCurveToPoint: CGPointMake(70.5, 40.5) controlPoint1: CGPointMake(68.55, 50.74) controlPoint2: CGPointMake(70.5, 45.62)]; 
[bezierPath addCurveToPoint: CGPointMake(64.64, 26.36) controlPoint1: CGPointMake(70.5, 35.38) controlPoint2: CGPointMake(68.55, 30.26)]; 
[bezierPath addCurveToPoint: CGPointMake(50.5, 20.5) controlPoint1: CGPointMake(60.74, 22.45) controlPoint2: CGPointMake(55.62, 20.5)]; 
[bezierPath addLineToPoint: CGPointMake(70.5, 20.5)]; 
[bezierPath addLineToPoint: CGPointMake(70.5, 60.5)]; 
[bezierPath closePath]; 
[bezierPath moveToPoint: CGPointMake(36.36, 54.64)]; 
[bezierPath addCurveToPoint: CGPointMake(50.5, 60.5) controlPoint1: CGPointMake(40.26, 58.55) controlPoint2: CGPointMake(45.38, 60.5)]; 
[bezierPath addLineToPoint: CGPointMake(30.5, 60.5)]; 
[bezierPath addLineToPoint: CGPointMake(30.5, 40.5)]; 
[bezierPath addCurveToPoint: CGPointMake(36.36, 54.64) controlPoint1: CGPointMake(30.5, 45.62) controlPoint2: CGPointMake(32.45, 50.74)]; 
[bezierPath closePath]; 
[fillColor2 setFill]; 
[bezierPath fill]; 
[fillColor setStroke]; 
bezierPath.lineWidth = 1; 
[bezierPath stroke]; 

Проще говоря, я не знаю, как использовать этот код, чтобы применить эту маску, чтобы увидеть увеличенное изображение клетки. Какие-либо предложения?

ответ

1

Я думаю, что вы можете сделать это проще, просто отредактировав свойство cornerRadius слоя UIImageView (после импорта QuartzCore), а затем установив для masksToBounds значение true. Ответьте на этот вопрос: How to crop UIImage on oval shape or circle shape?