我的应用上的图片出现问题。在我的滑出式菜单中,我有一个标题,我在其中放置了一个图像" header.png"它存在于两个版本" header.png"和" header@2x.png"。以下是我在我的应用程序中实现它的代码:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIImage *originalImage = [UIImage imageNamed:@"header.png"];
CGSize destinationSize = CGSizeMake(320, 150);
UIGraphicsBeginImageContext(destinationSize);
[originalImage drawInRect:CGRectMake(0,0,destinationSize.width,destinationSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *headerView = [[UIImageView alloc] initWithImage:newImage];
headerView.frame = CGRectMake(0,0, 320,150);
return headerView;
}
当我在手机上运行应用程序(iPhone 4s)时,我的图像是像素化的,边缘被吹了,它不是很干净......我不知道它来自哪里。< / p>
我的图像是320x150px,在72dpi中是640x300px
THX
- 编辑 -
我通过使用UIImageView解决了我的问题,见下文:
- (UIImageView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
NSString* fileName = [NSString stringWithFormat:@"header.png"];
UIImage *newImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fileName ofType:nil]];
UIImageView *headerView = [[UIImageView alloc] initWithImage:newImage];
headerView.frame = CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, 150);
return headerView;
}
答案 0 :(得分:1)
问题是UIGraphicsBeginImageContext
不会为您提供视网膜图像,除非您使用UIGraphicsBeginImageContextWithOptions(destinationSize, NO, scale)
scale
可能类似于[UIScreen mainScreen].scale
。
出于好奇:你为什么不单纯使用
UIImage *newImage = [UIImage imageNamed:@"header.png"]
return [[UIImageView alloc] initWithImage:newImage];