의 이름을 읽을 수 있습니까? UIImageView's
UIImage
현재 저장된의UIImageView
있습니까?
당신이 이런 일을 할 수 있기를 바랐지만 아직 알아 내지 못했습니다.
NSString *currentImageName = [MyIImageView getFileName];
답변
아니. 당신은 그렇게 할 수 없습니다.
그 이유는 UIImageView
인스턴스가 이미지 파일을 저장하지 않기 때문입니다 . 디스플레이 UIImage
인스턴스를 저장 합니다. 파일에서 이미지를 만들 때 다음과 같이합니다.
UIImage *picture = [UIImage imageNamed:@"myFile.png"];
이 작업이 완료되면 더 이상 파일 이름에 대한 참조가 없습니다. UIImage
인스턴스는 관계없이 그것을 가지고 어디에 데이터가 포함되어 있습니다. 따라서 UIImageView
파일 이름을 알 수 없습니다.
또한 가능하더라도 뷰에서 파일 이름 정보를 얻을 수 없습니다. 그것은 MVC를 깨뜨립니다.
답변
UIView의 모든 하위 클래스에 setAccessibilityIdentifier 메서드를 사용할 수 있습니다.
UIImageView *image ;
[image setAccessibilityIdentifier:@"file name"] ;
NSString *file_name = [image accessibilityIdentifier] ;
답변
아니오 아니오 아니오… 일반적으로 이러한 일이 가능합니다. 그것은 당신을 더러운 사람처럼 느끼게 할 것입니다. 꼭 필요한 경우 다음을 수행하십시오.
-
+imageNamed:(NSString*)imageName
기존 구현에 대한 호출 의 자체 구현으로 범주를 만들고 여기에 식별 된 기술 ( 개체 내에서 objc_setAssociatedObject / objc_getAssociatedObject를 사용하는 방법 )을imageName
사용하여 반환 된 UIImage 개체와 영구적으로 연결 합니다. -
Objective-C 런타임의 메서드 조회 테이블에서 구현에 대해 제공된 구현을 바꾸려면 메서드 전환을 사용
imageNamed:
합니다. -
원할 때마다 UIImage 인스턴스 (objc_getAssociatedObject 사용)와 연결 한 이름에 액세스합니다.
NIB에로드 된 UIImage의 이름을 가져올 수 없다는 경고와 함께 이것이 작동하는지 확인할 수 있습니다. NIB에서로드 된 이미지는 표준 함수 호출을 통해 생성되지 않는 것 같아서 정말 미스테리입니다.
구현은 귀하에게 맡기겠습니다. Objective-C 런타임을 사용하여 코드를 복사하여 붙여 넣는 것은 매우 나쁜 생각이므로 프로젝트의 요구 사항에 대해 신중하게 생각하고 필요한 경우에만 구현하십시오.
답변
이를 수행하는 고유 한 방법은 없습니다. 그러나이 동작을 직접 쉽게 만들 수 있습니다.
하위 클래스 UIImageView
를 만들고 새 인스턴스 변수를 추가 할 수 있습니다 .
NSString* imageFileName;
그런 다음을 재정의 setImage
하고 먼저 설정 imageFileName
중인 이미지의 파일 이름을 설정 한 다음 [super setImage:imageFileName]
. 이 같은:
-(void) setImage:(NSString*)fileName
{
imageFileName = fileName;
[super setImage:fileName];
}
기본적으로 할 수 없다고해서 불가능하다는 의미는 아닙니다. 🙂
답변
if ([imageForCheckMark.image isEqual:[UIImage imageNamed:@"crossCheckMark.png"]]||[imageForCheckMark.image isEqual:[UIImage imageNamed:@"checkMark.png"]])
{
}
답변
아니. 기본적으로 할 방법이 없습니다. UIImageView를 하위 클래스로 만들고 imageFileName 속성 (이미지를 설정할 때 설정)을 추가해야합니다.
답변
UIImage가 아닌 UIImageView는로드 된 이미지의 파일 이름을 보유하지 않습니다.
당신은
1 : (위의 Kenny Winker가 제안한대로) 하위 클래스 UIImageView가 fileName 속성을 갖거나
2 : 숫자 (image1.jpg, image2.jpg 등)로 이미지 파일의 이름을 지정하고 해당 번호 (image1.jpg의 경우 tag = 1, image2.jpg의 경우 tag = 2 등)로 이미지에 태그를 지정하거나
3 : UIImageView의 이미지를 업데이트 할 때마다 업데이트되는 클래스 수준 변수 (예 : NSString * currentFileName)가 있습니다.