0

我正在用这两条线移动和添加线。

  CGContextMoveToPoint(context, 20, 185);
  CGContextAddLineToPoint(context, 20, 185);

我想知道如何删除行(如 CGContextAddLineToPoint(context, 20, 185); //addline)。如果我的数组 == 2,我想在移动或清除线条颜色时删除线条;

那么我的线条颜色将是清晰的颜色或线条在我向前移动时移除位置。

任何想法或建议都将受到高度欢迎。

4

2 回答 2

0

只要你在一个drawRect:方法中,你可以在需要的时候简单地画线,如果你想清除它,你可以不做任何事情。该drawRect:方法被多次调用,并且在您开始绘图之前视图基本上被“清除”。所以你的代码可能看起来像这样:

- (void)drawRect:(CGRect)rect {
    // other drawing code and declaration of array variable...
    if ([array count] == 2) {
        CGContextMoveToPoint(context, 20, 185);
        CGContextAddLineToPoint(context, 20, 185);
    }
}
于 2013-09-04T13:54:03.360 回答
0

我遇到过同样的问题。直接我做不到,所以我使用了如下一些棘手的逻辑并为我工作。我只是给出提示,希望这个逻辑会对你有所帮助。

我有使用drawRect方法绘制下划线的按​​钮,所以在某些匹配情况下我需要删除它,所以我喜欢这样:

注意:“isRemoveUnderLine”是我的自定义按钮类中的 Bool 属性

if ([array count] == 2) {
     myButton.isRemoveUnderLine = YES;
     [myButton setNeedsDisplay];  //it will update your button context and call drawRect method again...
} 

//drawRect方法代码如下:

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    CGContextRef context = UIGraphicsGetCurrentContext();

    if(_isRemoveUnderLine)
        CGContextSetStrokeColorWithColor(context, [UIColor clearColor].CGColor);
    else
        CGContextSetStrokeColorWithColor(context, self.currentTitleColor.CGColor);

...
...
}

希望你能得到一些提示来修正你的逻辑!!!

于 2017-07-26T13:18:24.353 回答