Ios4 任何禁用CALayer'的方法;objective-c/iPhone/iOS SDK中的s光栅化缩放插值/抗锯齿?
当设置Ios4 任何禁用CALayer'的方法;objective-c/iPhone/iOS SDK中的s光栅化缩放插值/抗锯齿?,ios4,core-graphics,calayer,quartz-graphics,quartz-2d,Ios4,Core Graphics,Calayer,Quartz Graphics,Quartz 2d,当设置myLayer.rasterizationScale=0.01和myLayer.shouldRasterize=YES时,我想消除任何插值/抗锯齿/etc 例如: 以下是我正在尝试的代码: 对于无插值,请将图层的放大过滤器特性设置为KCAFilterArest。如果需要,还可以设置minificationFilter 此外,您不应该在-drawRect:方法中设置层的属性。相反,在初始化视图时或当您想更改图层内容时,请初始化图层属性。我发现接受的答案不正确,而我的答案是正确的,特别是考虑到
myLayer.rasterizationScale=0.01
和myLayer.shouldRasterize=YES时,我想消除任何插值/抗锯齿/etc代码>
例如:
以下是我正在尝试的代码:
对于无插值,请将图层的放大过滤器特性设置为KCAFilterArest。如果需要,还可以设置minificationFilter
此外,您不应该在-drawRect:方法中设置层的属性。相反,在初始化视图时或当您想更改图层内容时,请初始化图层属性。我发现接受的答案不正确,而我的答案是正确的,特别是考虑到我没有要点和问题的模糊性。抱歉;你的回答肯定是正确的,如果我被允许删除我的,我会的。唉,我只能投一票。@KevinPackard修复了,很抱歉我花了将近4年的时间。
- (void)drawRect:(CGRect)rect {
CGContextRef ctx = UIGraphicsGetCurrentContext();
CALayer *sourceLayer = self.delegate.sourceImageView.layer;
sourceLayer.rasterizationScale = 0.01;
sourceLayer.shouldRasterize = YES;
[sourceLayer renderInContext:ctx];
CGContextSetShouldAntialias(ctx, NO);
CGContextSetAllowsAntialiasing(ctx, NO);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(ctx, NO);
CGContextSetAllowsAntialiasing(ctx, NO);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CALayer *layer = [CALayer layer];
layer.contents = (id)[UIImage imageNamed:@"test.jpg"].CGImage;
layer.frame = CGRectMake(0, 0, 320, 411);
layer.rasterizationScale = 0.0001;
layer.shouldRasterize = YES;
layer.geometryFlipped = NO;
layer.edgeAntialiasingMask = 0;
layer.minificationFilter = kCAFilterNearest;
[layer renderInContext:ctx];
}