Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retina version of an image always used on non-retina display

In Cocoa application I've got 16x16 and 32x32 @2x version of an image: smallenter image description here. When the image is displayed in NSImageView Mac OS X always picks higher-resolution version (i.e. downscales the @2x image on non-retina displays instead of using the 1:1 version).

wrong image
(IB on the left = good, running app on the right = downscaled mess)

Of course I've got both images added to the project (as image.png and [email protected]).

If I delete the @2x image from app bundle then OS X will display the lower-resolution image.

The bug happens regardless whether Xcode (4.6.2) combines them into a .tiff or not (and I've checked that the combined .tiff contains both images).

Oddly this happens only with this particular image. Other 1x/2x images in the same project are displayed correctly matching screen DPI.

How is that possible?! Do images have to meet some special criteria other than size and filename pattern?

like image 834
Kornel Avatar asked Mar 24 '23 21:03

Kornel


1 Answers

Mystery solved: OS X doesn't like mixed types of PNGs.

$ file *.png
image.png: PNG image data, 16 x 16, 8-bit gray+alpha, non-interlaced
[email protected]: PNG image data, 32 x 32, 8-bit colormap, non-interlaced

if both files are forced to use same color mode (i.e. both gray or both paletted) then OS X selects images correctly.

like image 79
Kornel Avatar answered Mar 31 '23 17:03

Kornel