2012-03-27 6 views
1

사용자 정의 버튼 클래스 내에 작은 코드 덩어리를 재사용하려고합니다. 이 작업을하려면 비 신축성 이미지 (아이콘) 또는 신축성있는 이미지 ('휙휙')를 전달해야합니다. 코드 내에서 높이를 그리려면 rect를 설정해야하므로 이상적으로 이미지가 신축성이 있는지 여부를 간단히 결정할 수 있습니까? 그렇지 않은 경우 이미지의 크기로 그립니다. 그렇지 않으면 포함하는 rect의 경계에 그립니다.UIImage가 신축성이 있는지 확인할 수 있습니까?

지금까지 capInsets (iOS 5) 또는 leftCapWidth/topCapHeight (pre iOS 5)에 대한 조사가 유용하지 않습니다.

내가 사용할 수있는 코어 또는 쿼츠에 묻은 것이 있습니까?

그냥 궁금 해서요, 지금은 여분의 매개 변수를 사용하여 코딩하고 있습니다.

** 내가 CGImageRef을 통해 읽기와 CI에 해당 ** 이후했습니다

지금까지 내가 말할 수있는대로 어떻게하는지 질문을 구걸 우리는 이미지를 식별하기 위해 액세스 할 수있는 그런 정보는 없다 운영 체제는 알고 있습니까?

답변

1

강렬한 이미지 분석 (100 % 정확하지 않음)이 없으면이를 감지 할 방법이 없습니다. UIImage는 본질적으로 메타 정보가 포함 된 일부 픽셀로,로드 한 파일에서 모두 가져옵니다. 해당 정보가있는 파일 형식은 없습니다.

그러나 이미지의 파일 이름에 일부 정보를 인코딩 할 수 있습니다. stretchable 인 foo.png라는 이미지가 있다면 foo.stretch.png라고 부르지 그래도 될까요? 로딩 루틴은 파일 이름을 분석하고 UIImage와 연결할 수있는 메타 정보를 추출하거나 (관련 객체의 경우 http://labs.vectorform.com/2011/07/objective-c-associated-objects/ 참조) 메타 정보로 UIImage를 합성하는 고유 한 클래스를 생성하여 메타 정보를 추출 할 수 있습니다.

행운을 빕니다.

+0

나는 안드로이드에서 이미지를 일반적으로 표현하는 하위 클래스라는 것을 알게되었다. Grr. : P 코드 내부에서 버튼을 렌더링하는 데 사용하는 UIView 하위 클래스의 bool stretchable 속성을 설정 한 다음 setter 및 drawRect 루틴에서 해당 속성을 확인하면 쉽게 코딩 할 수 있습니다. 그래서 저는 이미 기술적으로 해결 한 문제였습니다. 나는 단지 궁금했다. – Diziet

0

UIImage *를 만들 때 .size 속성은 절대 값입니다. 단추 모양으로 늘릴 수있는 경우. 예를 들어 눈금을 확인하십시오.

- (BOOL) stretchableImage:(UIImage*)aImage toView:(UIView*)aView{ 
    CGFloat scaleW = aView.size.width/aImage.size.width; 
    CGFloat scaleH = aView.size.height/aImage.size.height; 

    if (scaleW == scaleH){ 
     if (scaleW < 1) 
      return YES; 
    } 

    return NO; 
} 
+0

나를 위해 작동하지 않습니다. stretchableImageWithLeftCapWidth/resizableImageWithCapInsets에 의해 정의 된 이미지입니다. 그래서 항상 포함 rect보다 작을 것입니다. – Diziet

관련 문제