1

我有一些 UIVies 边缘到边缘对接。视图完全覆盖了 superView。显示效果很好,但是在渲染时相邻的边缘是可见的,也就是说它们之间会出现一条线。由于视图在显示中看起来很完美,我想它一定是导致这种情况的视图像素的插值。

有人知道怎么修这个东西吗?

下图是渲染图。在设备或模拟器上,这些线将不可见。 在此处输入图像描述

渲染代码

-(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)呈现为一个没有抗锯齿的 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 回答
-1

尝试:

UIGraphicsBeginImageContextWithOptions(renderSize, false, [[UIScreen mainScreen] scale]);

代替:

UIGraphicsBeginImageContext(renderSize);
于 2013-04-25T11:34:24.663 回答