Search code examples
cocoaretina-displayappkit

How can a Mac app be so retina unfriendly


To my knowledge, the windows, labels, ... etc. are automatically retina-fied when they run on the new MacBooks with Retina Displays. That's the case with most of the apps I have (third party apps I didn't develop). However...

There is this specific app (Yummy ftp), that just looks miserable on the retina. Every single "thing" within the window is non-retina-fied. Even the window's toolbar.

In a counter example, many other apps just got automatically retina-fied (except raster images, CoreGraphics/CoreAnimation stuff, ...etc).

Showcase:

I did not scale these images. I am just screen capturing, cropping, and uploading.

Yummy FTP non retinified

Daisy Disk retina-fied

As a cocoa developer, I would like to know the cause of such misbehavior, and how to avoid it.


Solution

  • https://developer.apple.com/library/mac/#documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Introduction/Introduction.html, make sure the guide have be read. "An App’s High-Resolution Capability Is Available in the Info Window Users can find out whether an app is running in low resolution by opening its Info window and looking at the “Open in Low Resolution” checkbox, as shown in Figure 1-7. Apps that aren’t Cocoa apps have this checkbox selected and unavailable (dimmed). Most Cocoa apps have this checkbox available, but not selected. A user can choose to run a Cocoa app in magnified mode if the app has usability issues related to high resolution.

    Figure 1-7 The resolution option in the app’s Info window![enter image description here]

    Some Cocoa apps that are not fully optimized for high resolution might have the checkbox selected and available by default. These apps will run in magnified mode unless the user overrides the default setting. Users might want to override the default if the issues related to high resolution are tolerable.

    If the “Open in Low Resolution” checkbox is selected by default for your app—whether the checkbox is available (dimmed) or not—you can change the default by:

    Fixing all bugs related to high resolution Setting the NSHighResolutionCapable attribute to YES, in the Info.plist for the app, as shown in Figure 1-8. Figure 1-8 The key that indicates an app is ready for high resolution![enter image description here]

    When users update to the revised version of your app, they will be able to enjoy the high-resolution version.

    If your app is optimized for high resolution, you can request that the “Open in Low Resolution” checkbox is not displayed by adding the NSHighResolutionMagnifyAllowed key to the Info.plist for your app. Then, set the key’s value to NO (Boolean value). A value of YES (the default) means that checkbox should be shown as usual."