0

この2行で行を移動して追加しています。

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

行を削除する方法を知りたいです (CGContextAddLineToPoint(context, 20, 185); //addline など)。配列 == 2 の場合、線の色を移動またはクリアするときに線を削除したい。

次に、線の色がクリアカラーになるか、線が前方に移動したときに位置が削除されます。

どんなアイデアや提案も大歓迎です。

4

2 に答える 2

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 に答える
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 に答える