I have an image (512 x 512 pixels 299.98 pixels/inch). The code I am using to display the image in button is
UIImage *cameraImage = [UIImage imageNamed:@"image.png"];
[cameraButton setImage:cameraImage forState:UIControlStateNormal];
if(IS_IPAD)
cameraButton.frame = CGRectMake(self.view.frame.size.width*0.04,self.view.frame.size.height*0.75,cameraImage.size.width*0.5,cameraImage.size.height*0.5);
else
cameraButton.frame = CGRectMake(self.view.frame.size.width*0.04,self.view.frame.size.height*0.75,cameraImage.size.width*0.25,cameraImage.size.width*0.25);
Now the image displays great on iPad (Both Retina and normal), iPhone Retina. But the image shows very clumsy on iPhone 3GS. Look at the screenshot attached.
Please help me find out what is going wrong.

It’s caused by iOS’ graphics frameworks’ behavior – they interpolate the image, which introduces loss in quality. You need to generate a smaller image (of half of the resolution of the original one) and include that in your project as well.