2011-07-06 4 views
0

나는 여기 바보 같은 짓을하고 있다고 확신한다. UIButton 위에 다른 모든 상태의 배경 이미지를 가져 와서 신축성있는 버전으로 변환하고 단추에 다시 적용 할 수 있도록 카테고리를 만듭니다.아이폰 : 버튼에 스트레칭 가능한 이미지를 적용하면 비활성화 됨

- (void)enableBackgroundImageStrechingWithLeftCapWidth:(float)leftCapWidth withTopCapHeight:(float)topCapHeight; 
{ 

    UIImage *backgroundimageNormal = [self backgroundImageForState:UIControlStateNormal]; 

    if (backgroundimageNormal != nil) 
    { 
     UIImage *stretchImage = [backgroundimageNormal stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight]; 
     [self setBackgroundImage:stretchImage forState:UIControlStateNormal]; 
    } 

    UIImage *backgroundimageSelected = [self backgroundImageForState:UIControlStateSelected]; 

    if (backgroundimageSelected != nil) 
    { 
     UIImage *stretchImage = [backgroundimageSelected stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight]; 
     [self setBackgroundImage:stretchImage forState:UIControlStateSelected]; 
    } 

    UIImage *backgroundimageHighlighted = [self backgroundImageForState:UIControlStateHighlighted]; 

    if (backgroundimageHighlighted != nil) 
    { 
     UIImage *stretchImage = [backgroundimageHighlighted stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight]; 
     [self setBackgroundImage:stretchImage forState:UIControlStateHighlighted]; 
    } 

    UIImage *backgroundimageDisabled = [self backgroundImageForState:UIControlStateDisabled]; 

    if (backgroundimageDisabled != nil) 
    { 
     UIImage *stretchImage = [backgroundimageDisabled stretchableImageWithLeftCapWidth:leftCapWidth topCapHeight:topCapHeight]; 
     [self setBackgroundImage:stretchImage forState:UIControlStateDisabled]; 
    } 
} 

는 버튼을 지금 클릭 할 수 없습니다 제외하고 작동하는 것 같다

답변

0

그것은 강조 표시된 상태가 문제를 일으키는 것 같다!

강조 표시된 블록을 제거했는데 정상적으로 작동합니까?

0

강조 표시/비활성화 상태의 사용자 지정 이미지가 없지만 UIButton을 사용하여 강조/비활성화 효과를 적용한 경우 [self backgroundImageForState: UIControlStateHighlighted]nil을 반환하지 않습니다. 대신 정상 상태 이미지에 대한 포인터를 반환합니다.

코드를 사용하면 모든 주에 대해 동일한 이미지를 효과적으로 설정하게됩니다. 프레임 워크의 사용자 정의 이미지처럼 보입니다. 이렇게하면 내장 하이라이트/디스 에이블 효과가 비활성화됩니다.

관련 문제