图像内容与视网膜显示有关的问题

时间:2012-10-24 14:54:28

标签: objective-c ios uibutton retina-display

我有这个UIButton,他有一个图像,在普通的iPhone上工作正常,图像contentMode设置为UIViewcontentModeCenter并且很好。但是在视网膜上,图像不是中心,它很大,不适合按钮框架。

为什么会这样,我该如何解决?

[theImageView setImage:Image forState:UIControlStateNormal];
[theImageButton setImage:Image forState:UIControlStateHighlighted];
[theImageButton setImage:Image forState:UIControlStateSelected];
[theImageButton setBackgroundColor:[UIColor clearColor]];
[theImageButton addTarget:self action:@selector(dismissKeyboard:) forControlEvents:UIControlEventAllTouchEvents];
theImageButton.imageView.contentMode = UIViewContentModeCenter;

图片加载:

- (UIImage *)loadScreenShotImageFromDocumentsDirectory
{
    UIImage * tempimage;
    NSArray *sysPaths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
    NSString *docDirectory = [sysPaths objectAtIndex:0];
    NSString *filePath = [NSString stringWithFormat:@"%@/MeasureScreenShot.png", docDirectory];
    tempimage = [[UIImage alloc] initWithContentsOfFile:filePath];

    return tempimage;
}

我不得不说,加载到contentMode中的图像是以编程方式拍摄的屏幕截图。也许它与它有关(无论如何在正常显示器上它工作正常)。

谢谢!

1 个答案:

答案 0 :(得分:0)

听起来像是你的视网膜图像,有1.0的比例。您需要告诉系统,您的图像实际上是2.0,如果您使用上下文捕获屏幕截图,请使用

UIGraphicsBeginImageContextWithOptions(..., ..., 0.0);

0.0告诉它使用当前设备的主屏幕比例,或者您可以自己指定正确的比例。