我想要一个带有渐变背景和图像的视图。因此,我为图层启用了图层支持,添加了NSImageView
并将图层设置为CAGradientLayer
。然而,这使得缩小的图像非常难看。见比较:
图层ON:,图层OFF:
有人也观察过这个吗?有没有办法在不关闭图层背景的情况下解决这个问题?
答案 0 :(得分:0)
在遇到完全相同的问题后,我偶然发现了这个问题。图层支持的NSImageView的渲染看起来非常可靠,但非图层支持的渲染看起来很棒。
我尝试了很多不同的东西,但最后这实际上是我当地CocoaHeads集团的人们最终提出解决方案的建议。
这是适用于我的代码。
CGImageRef imageRef;
NSRect rect;
rect = NSZeroRect;
rect.size = [_imageView bounds].size;
imageRef = [image CGImageForProposedRect:&rect
context:[NSGraphicsContext currentContext]
hints:@{ NSImageHintInterpolation: @(NSImageInterpolationHigh)}];
image = [[[NSImage alloc] initWithCGImage:imageRef size:rect.size] autorelease];
[_imageView setImage:image];
首先,我只是假设插值模式是问题。但是,改变这个价值似乎没有什么区别。关于从NSImage-> CGImage-> NSImage出发的事情是什么呢。我讨厌提供一个我不完全理解的解决方案,但至少它是什么。