1

私はいくつかのUIViesを端から端まで突き合わせています。ビューはスーパービューを完全にカバーします。表示では見栄えがしますが、レンダリングすると、隣接するエッジが表示されます。つまり、それらの間に線が表示されます。ビューは表示で完璧に見えるので、これを引き起こすのはビューのピクセルの補間であるに違いないと思います。

誰でもこれを修正する方法を知っていますか?

下の画像はレンダリングです。デバイスまたはシミュレーターでは、線は表示されません。 ここに画像の説明を入力

コードをレンダリングする

-(void)renderImage {
    CGSize renderSize = CGSizeMake(masterView.frame.size.width, masterView.frame.size.height);
    UIGraphicsBeginImageContext(renderSize);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGContextConcatCTM(context, [[masterView layer] affineTransform]);
    [[masterView layer] renderInContext:UIGraphicsGetCurrentContext()];
    renderedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    CGContextRestoreGState(context);
    UIImageWriteToSavedPhotosAlbum(renderedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);
    masterView.transform = CGAffineTransformIdentity;
}
4

2 に答える 2

1

コア グラフィックスは、ビューのアンチ エイリアスを試みます。そうしないように伝える必要があります。

UIView である self をアンチエイリアシングなしで UIImage としてレンダリングする次の例を考えてみましょう。

UIGraphicsBeginImageContextWithOptions(self.bounds.size, YES, [[UIScreen mainScreen] scale]);
CGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), FALSE);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
于 2014-10-23T13:25:22.107 に答える