0

プログラムでテキストビューの行を作成するために、次のコードを実装しました。

- (void)drawRect:(CGRect)rect{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    [super drawRect:rect];
    CGSize textSize = [alpha sizeWithFont:[UIFont fontWithName:@"FreeHand575" size:28.0]
    constrainedToSize:self.contentSize lineBreakMode:NSLineBreakByCharWrapping];
    NSUInteger height = textSize.height;
    textSize = [self.text sizeWithFont:self.font constrainedToSize:self.contentSize       
    lineBreakMode:NSLineBreakByCharWrapping];
    NSUInteger contentHeight = (rect.size.height > textSize.height) ?  
   (NSUInteger)rect.size.height : textSize.height;
    NSUInteger offset = height; 
   CGContextSetRGBStrokeColor(ctx, .8, .8, .8, 1);
   for(int i=offset;i < contentHeight;i+=height) {
      CGPoint lpoints[2] = { CGPointMake(0, i), CGPointMake(rect.size.width, i) };
      CGContextStrokeLineSegments(ctx, lpoints, 2);
   }}

それは完全に機能しています。しかし、問題は、ユーザーがテキストビューからテキストを削除し、描画された線が削除またはフェードする場合に発生します。

フェードライン付きテキストビュー

問題が見つかりません。誰かが何か考えを持っているなら、私を助けてください。

前もって感謝します

4

1 に答える 1

0

テキストビューのメインレイヤーの下にレイヤーを追加し、その上に線を引くことができます。そうすれば、描画テキスト(または削除)は線に影響しません。レイヤーに描画する方法については、こちらをお読みください。「CALayer とカスタム描画コンテンツ」を参照してください。

于 2013-10-21T11:50:55.963 に答える