我想要一个带有渐变背景和图像的视图。所以我打开了图层的图层支持,添加NSImageView
并将图层设置为CAGradientLayer
. 然而,这使得按比例缩小的图像非常难看。看比较:
层开:,层关:
有没有人也观察到这一点?有没有办法在不关闭图层支持的情况下解决这个问题?
我想要一个带有渐变背景和图像的视图。所以我打开了图层的图层支持,添加NSImageView
并将图层设置为CAGradientLayer
. 然而,这使得按比例缩小的图像非常难看。看比较:
层开:,层关:
有没有人也观察到这一点?有没有办法在不关闭图层支持的情况下解决这个问题?
在遇到完全相同的问题后,我偶然发现了这个问题。图层支持的 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 去的东西是什么。我讨厌提供一个我不完全理解的解决方案,但至少它是一些东西。