使用视图控制器在uiView中制作Circle

时间:2014-09-18 11:42:17

标签: ios cocoa-touch swift

当我点击屏幕(随机而非点击位置)时,如何制作圆圈! PS:点击手势应该在View Controller File中不是“我自己的自定义视图文件”

2 个答案:

答案 0 :(得分:0)

首先在视图控制器中定义点按手势。

    UITapGestureRecognizer *letterTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapgesture:)];

[self.view addsubview:letterTapRecognizer];

在此点按手势方法上,请拨打circleview

- (void)tapgesture:(UITapGestureRecognizer*)sender 

{
circleview *temp = [[circleview alloc] initWithFrame:CGRectMake(0, 0, 60, 40)];
[self.view addSubview:temp];

}

实现 - (void)drawRect:circleview.m中的(CGRect)rect方法

- (void)drawRect:(CGRect)rect
{
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(contextRef, 2.0);
    CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0);
    CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0);
    CGRect circlePoint = (CGRectMake(touchPos.x, touchPos.y, 10.0, 10.0));

    CGContextFillEllipseInRect(contextRef, circlePoint);
}

答案 1 :(得分:0)

在正常情况下,UIViewController中的图片不会发生,而是UIView

如果您坚持在视图控制器中进行绘图,那么唯一的方法是创建CALayer,将其设置为视图控制器,并且你在drawLayer:inContext中的渲染:

@property (nonatomic, strong) CALayer* layer;

-(void)viewDidLoad {
    ...
    layer = [CALayer new];
    layer.frame = self.view.bounds;
    layer.delegate = self;
    [layer setNeedsDisplay];
    [self.view.layer addSubLayer:layer];
}

-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context {
    ... do your drawing here...
}

同样,更常规的方法是将UIView子类化并处理所有绘图。