iOS 8-9 UIViewContentModeCenter does not snap UIImageView contents to pixel grid

Number:rdar://21526792 Date Originated:24-Jun-2015 10:34 AM
Status:Open Resolved:
Product:iOS Product Version:iOS 8, all versions. iOS 9 beta 1 and 2.
Classification: Reproducible:Always
When creating a UIImageView, you can make it a larger size than the UIImage it contains. However, selecting someImageView.contentMode = UIViewContentModeCenter will cause the image to be blurry because its origin contains a fractional pixel.

I'm not sure if this is a UIImageView bug or a UIView bug.

Steps to Reproduce:
I attached a project with sample code, but here is the important part:

iconImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"foo.png"]];
iconImageView.contentMode = UIViewContentModeCenter;
// Add 1 px (which is a fractional point on retina devices) to the image view's height. The image view will try to leave 0.5 px of blank space on the top and bottom, causing the blurry icon.
iconImageView.frame = CGRectMake(0, 0, iconImageView.frame.size.width, iconImageView.frame.size.height + 1 / [UIScreen mainScreen].scale);

Expected Results:
The image is as close to centered as possible, within the constraint of snapping it to the pixel grid

Actual Results:
When calculating the image's coordinates, UIKit doesn't seem to round to the pixel grid.

iOS 8, all versions. iOS 9 beta 1 and 2.

This behavior does not happen on iOS 7

Physical device and simulators: iPhone 5s, iPhone 6, iPhone 6 Plus, iPad Air

'' was successfully uploaded.


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!