2009-08-13 3 views
3

저는 ShadowView라는 UIImageView 하위 클래스가 있습니다.이 하위 클래스는 아무 것도 사용할 수있는 그림자를 표시합니다. 섀도우 뷰는 펜촉에서로드됩니다. stretchableImageWithLeftCapWidth : topCapHeight는 UIImageView 하위 클래스의 initWithCoder :에서 작동하지 않습니다.

- (id)initWithCoder:(NSCoder *)decoder { 
    self = [super initWithCoder:decoder]; 
    if (self != nil) { 
     UIImage *shadowImage = [[UIImage imageNamed:@"drop_shadow_4_pix.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:4]; 

     [self setContentMode:UIViewContentModeScaleToFill]; 
     [self setImage:shadowImage]; 
    } 
    return self; 
} 

나는 응용 프로그램을 실행

는하지만,이 이미지가 표시되지 않습니다 : initWithCoder에서

:, 나는 다음과 같은 코드가 있습니다.

하지만

... 
UIImage *shadowImage = [UIImage imageNamed:@"drop_shadow_4_pix.png"]; 
... 

잘 작동으로 변경,하지만이 잘못 뻗어 경우.

왜 이런 일이 발생하는지 알고 싶습니다.

편집 : initWithFrame :을 사용하여 프로그래밍 방식으로 shadowview를로드 할 때와 동일합니다. initWithCoder :와 유사하게 구현됩니다.

다른 편집 : 나는 문제를 해결했다고 생각합니다. 자동 크기 조정 마스크를 설정해야했습니다.

답변

3

그림자 이미지인가요? 방법은 + 1 개 화소 스트레칭 캡 대한 4 개 화소를해야하므로 기본 이미지가 5 미만 픽셀 너비 또는 높이 5 개 픽셀 경우 nil을 반환 수

UIImage *shadowImage = [[UIImage imageNamed:@"drop_shadow_4_pix.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:4]; 

.

+2

9 픽셀 x 9 픽셀입니다. 중앙 행과 열, 양쪽에 마개가 있습니다. –

관련 문제