2011-08-16 6 views
3

"checkbox.png"라는 내 프로젝트와 동일한 디렉토리에 .png 이미지가 있습니다. 그 이미지를 배경으로 UIImageView를 만들고 UITableViewCells 세트의 액세서리보기로 설정하려고합니다. 현재 가지고있는 항목 :파일에서 UIImageView를 만들 수 없습니다.

UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageWithContentsOfFile:@"checkmark.png"]]; 
v.backgroundColor = [UIColor redColor]; 
cell.accessoryView = v; 
[v autorelease]; 

어느 쪽이 작동하지 않습니다. 체크 박스와 뷰가 작동하지 않는 이유는 다른 더미에 UIView (예를 만들 수 있습니다. 잘 작동

v = [[UIView alloc] init]; 
v.backgroundColor = [UIColor redColor]; 

, 그것은 내 uitableviewcells의 오른쪽에 작은 빨간 상자를 표시합니다. 나는 "잘 모르겠어요. 파일 경로를 지정하는 방식에 문제가 있습니까?

+0

너비 및 높이가 약간인지 확인하려면 이미지보기의 프레임을 확인 했습니까? – jtbandes

답변

7

imageWithContentsOfFile:에는 파일 경로가 필요합니다. 방금 파일 이름을 지정하면 현재 디렉토리에서 파일을 찾을 것입니다. 솔직히 현재 디렉토리가 일반적으로 iOS 앱에 있는지, 또는 어떤 보장이 있는지는 알 수 없습니다.

요점은 파일의 절대 경로를 지정하거나 imageNamed:을 사용하여 이름을 가져 와서 기본 번들의 리소스를 찾는 것입니다. 즉

:

UIImage *image = [UIImage imageNamed:@"checkmark"]; 
UIView *view = [[UIImageView alloc] initWithImage:image]; 
imageNamed:의 또 다른 장점은 (다시 사용할 경우) 이미지를 캐시합니다 당신의 장치가 레티 나 디스플레이가있는 경우는 자동으로 [email protected] 버전을 보는 것입니다

. 이 동작을 원하지 않는 경우

직접 경로를 얻을 수 있습니다 :

NSString *imagePath = [[NSBundle mainBundle] pathForResourceNamed:@"checkmark" ofType:@"png"]; 
UIImage *image = [UIImage imageWithContentsOfFile:imagePath]; 

이 일반적으로 더 나은 옵션입니다 (당신이 원하기 때문에 그것이 큰 이미지 그리고 당신이 그것을 캐시하지 않으려면 자주 사용하지 마십시오).

1

imageWithContentsOfFile : 메서드를 사용하려면 파일 경로가 있어야합니다. 이미지가 기본 번들에 있으면 다음을 수행하면됩니다. 트릭 :

UIView * v = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkmark.png"]]; 
1

이미지 파일을 추가했는지 확인하십시오. 귀하의 XCode 프로젝트에. 같은 디렉터리에있는 것만으로는 충분하지 않습니다. XCode 내에서 파일 메뉴를 선택한 다음 프로젝트에 "파일 추가 ..."를 선택하십시오.

관련 문제