-1

私は複数の端末画面アプリに取り組んでいUIViewます。そのため、端末ビュー用のカスタム サブクラスがあります。新しい端末画面が必要になるたびに、新しいビューを用意します。

このビュー クラスは、 を使用してテキストを描画しますCGContextRef。私が直面している問題は、コンテキストが作成された最後のビューのテキストのみを描画することです。たとえば、3 つの端末があり、最初/2 番目に描画すると、3 番目のビューにも描画されます。

これまでの私のコード:

-(void)drawRect:(CGRect)rect{  
    contxt = UIGraphicsGetCurrentContext();
}


-(void)setNeedsDisplayInRect:(CGRect)rect{

    UIGraphicsPushContext(contxt);

    //CGContextSaveGState(contxt);

    CGContextSetTextMatrix(contxt,CGAffineTransformIdentity);
    if (translated) {
        CGContextScaleCTM(contxt, 1, -1);
        translated = NO;
    }
    CGRect rectConvert = CGRectMake(rect.origin.x, rect.origin.y-screenWindowHeight, rect.size.width, rect.size.height);

    CGContextSetFillColorWithColor(contxt, bgColor.CGColor);
    CGContextFillRect(contxt, rectConvert);

    if (!isDeleteChar) {
        CGContextSetFillColorWithColor(contxt, fgColor.CGColor);
        [displayString drawInRect:rectConvert withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];
    }
    if (ul == EXTENDED_5250_UNDERLINE) {
        CGContextSetFillColorWithColor(contxt, fgColor.CGColor);
        [@"_" drawInRect:rectConvert withFont:font lineBreakMode:NSLineBreakByWordWrapping alignment:NSTextAlignmentLeft];
    }

    //CGContextRestoreGState(contxt);
    UIGraphicsPopContext();
}

最後に、自分で使用して解決しました

[[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate: [NSDate date]];直後setNeedsDisplay

4

1 に答える 1