XCode如何创建一个心形的UIView?这是一个圆圈的例子

时间:2014-08-27 09:48:26

标签: xcode uiview drawrect uibezierpath

我需要一个心形UIView,这是一个圆形相同概念的例子!知道如何在drawRect方法中绘制它吗?

//  CircleView.h
#import <UIKit/UIKit.h>
@interface CircleView : UIView
@property (strong, nonatomic) UIColor *circleColor;
@property BOOL isFilled;
@end

//  CircleView.m
#import "CircleView.h"
@implementation CircleView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.backgroundColor = [UIColor clearColor];
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    NSLog(@"isFilled: %d",_isFilled);
    if(_isFilled) {
        CGContextSetFillColorWithColor(ctx, _circleColor.CGColor);
        CGContextFillEllipseInRect(ctx,  CGRectMake( rect.origin.x,rect.origin.y, rect.size.width ,rect.size.height));
    } else {
        CGPoint midPoint = { CGRectGetMidX (rect), CGRectGetMidY(rect) };
        CGFloat radius = (rect.size.width * 0.5)  -2; // * _lineThickness;
        CGContextAddArc (ctx, midPoint.x, midPoint.y, radius, 0, M_PI * 180, NO);
        CGContextSetLineCap (ctx, kCGLineCapSquare );
        CGContextSetLineWidth (ctx, 2.0);
        CGContextSetStrokeColorWithColor(ctx, _circleColor.CGColor);
        CGContextStrokePath (ctx);
    }
    CGContextStrokePath (ctx);
//    [self.circleLabel drawRect:rect];
}
@end

所以我的想法是能够添加类似于以前的CircleView代码的多个类型为HeartView的UIView。

0 个答案:

没有答案