1

我想要一个带有渐变背景和图像的视图。所以我打开了图层的图层支持,添加NSImageView并将图层设置为CAGradientLayer. 然而,这使得按比例缩小的图像非常难看。看比较:

层开:层开,层关:层关闭

有没有人也观察到这一点?有没有办法在不关闭图层支持的情况下解决这个问题?

4

1 回答 1

1

在遇到完全相同的问题后,我偶然发现了这个问题。图层支持的 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 去的东西是什么。我讨厌提供一个我不完全理解的解决方案,但至少它是一些东西。

于 2013-02-14T15:25:04.023 回答