我想要一个带有渐变背景和图像的视图。因此,我为该图层打开了图层支持,添加了NSImageView
并将图层设置为CAGradientLayer
。但是,这使按比例缩小的图像非常难看。查看比较:
层ON :,层OFF:
有人也观察到过吗?有没有解决此问题的方法而无需关闭层支持?
最佳答案
在遇到完全相同的问题后,我偶然发现了这个问题。一层支持NSImageView的渲染看起来非常缩放,但非一层支持的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进行的操作是什么。我讨厌提供我不完全了解的解决方案,但至少是这样。
关于cocoa - 启用图层支持后,NSImageView中的缩放图像看起来很糟糕,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13588865/