0

グラフィックス コンテキストで画像を再描画していますがCGContextRef、画像を描画すると、縦横比が正しくありません。下の図では、グラフィック コンテキストは黒い四角 (別のUIViewクラス) であり、表示されている画像はその下の赤いカルーセルから選択されています。たくさんの投稿を見てきましたが、どこを修正すればよいのかわかりません。

ここに画像の説明を入力

これが私のdrawRect方法です。しかないので、どこに設定できるのかわかりませcontentModeUIImageViewUIImages.

- (void)drawRect:(CGRect)rect
{
    NSMutableDictionary *dna = _mini.dna;
    NSString *directory = @"FacialFeatures";

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextClearRect(context, self.bounds);

    //flip the coordinates for Core Graphics coordinates
    CGContextScaleCTM(context, 1, -1);
    CGContextTranslateCTM(context, 0, -self.bounds.size.height);

    for (id key in dna) {
        NSString *value = [dna objectForKey:key];
        if (![value isEqualToString:@""]) {
            UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%@/%@/%@", directory, key, value]];
            CGContextDrawImage(context, rect, image.CGImage);
        }
    }
}

おまけとして、Graphics Context の背景がなぜ黒なのかもわかりません。インターフェイスビルダーと init メソッドで設定しようとしましたが、すべての設定が無視されているようです。どうもありがとう。

4

2 に答える 2

1

を使用して四角形をクリアしました

CGContextClearRect(context, self.bounds);

これにより、コンテキストとビューが透明になるため、スーパービューの色が黒である可能性があることを確認してください。白くしたい場合は、次のようにすることができます

CGContextClearRect(context, rect);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);

画像ストレッチの理由

CGContextDrawImage指定された四角形に収まるように画像をスケーリングします。したがって、アスペクト比が維持されるような方法で rect を提供するようにしてください。


ここでは、いくつかの計算を使用してrectまたはサイズを計算するいくつかのリンクを提供してい
ます

于 2013-10-29T14:34:05.363 に答える
0

この行を含めて、上記のメソッドをチェックインします:-

[super drawRect:rect];
于 2013-10-29T12:59:49.600 に答える