0

私のビューは黒い長方形です...しかし、そうであってはなりません...ビューを描画する方法は次のとおりです。これは、テーブルビューにサブビューとして追加されます。

- (void)drawRect:(CGRect)rect
{
    //// General Declarations
    CGContextRef context = UIGraphicsGetCurrentContext();

    //// Color Declarations
    UIColor* color3 = [UIColor colorWithRed: 0.102 green: 0.737 blue: 0.612 alpha: 1];
    UIColor* buttonStrokeColor = [UIColor colorWithRed: 0.925 green: 0.941 blue: 0.945 alpha: 0.004];

    //// Image Declarations
    UIImage* image = [UIImage imageNamed: @"image"];
    UIColor* imagePattern = [UIColor colorWithPatternImage: image];

    //// Group 2
    {
        //// AddButton Drawing
        UIBezierPath* addButtonPath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30, 30)];
        [color3 setFill];
        [addButtonPath fill];
        [buttonStrokeColor setStroke];
        addButtonPath.lineWidth = 1;
        [addButtonPath stroke];

        //// Group
        {
            //// Rectangle Drawing
            UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(280.0, 3.0, 30.0, 30.0)];
            CGContextSaveGState(context);
            CGContextSetPatternPhase(context, CGSizeMake(86, 33));
            [imagePattern setFill];
            [rectanglePath fill];
            CGContextRestoreGState(context);
            [buttonStrokeColor setStroke];
            rectanglePath.lineWidth = 1;
            [rectanglePath stroke];
        }
    }

四角形を黒くするコードがコードに含まれている可能性はありますか? (完全なブラックボックスです)

4

1 に答える 1

0

ほとんどの場合、ビュー自体の境界の外に描画しています。すべての描画は、ビューのフレームではなく、ビューの境界に基づいて行う必要があります。

これは、原点が常に 0, 0 であることを意味します。ビューの原点が 0, 0 であることに基づいて、ベジエ パスを更新します。

また、実行時のビューのサイズに基づいて描画コードを設定する必要があります。外部コードによって作成されたビューのサイズに関係なく、コードが適切に機能するようにします。

于 2013-07-01T04:03:19.563 に答える