我想要一个带有渐变背景和图像的视图。因此,我为该图层打开了图层支持,添加了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/

10-12 14:46