크레딧은 @bryanmac의 helpful answer으로 이동합니다. 그의 코드를 시작점으로 사용했지만 UIImageView
을 사용하지 않고도 같은 결과를 얻을 수 있음을 알았습니다.
- (UIImage *)translucentImageFromImage:(UIImage *)image withAlpha:(CGFloat)alpha
{
CGRect rect = CGRectZero;
rect.size = image.size;
UIGraphicsBeginImageContext(image.size);
[image drawInRect:rect blendMode:kCGBlendModeScreen alpha:alpha];
UIImage * translucentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return translucentImage;
}
이 비활성화 상태의 버튼의 배경 이미지를 설정합니다 : 여기
내 솔루션입니다
UIImage * disabledBgImage = [self translucentImageFromImage:originalBgImage withAlpha:0.5f];
[button setBackgroundImage:disabledBgImage forState:UIControlStateDisabled];
편집 : 난을 만들어 더 내 솔루션을 정제
카테고리에 UIImage
이 있습니다. 방법 :
- (UIImage *)translucentImageWithAlpha:(CGFloat)alpha
{
UIGraphicsBeginImageContextWithOptions(self.size, NO, 0.0);
CGRect bounds = CGRectMake(0, 0, self.size.width, self.size.height);
[self drawInRect:bounds blendMode:kCGBlendModeScreen alpha:alpha];
UIImage * translucentImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return translucentImage;
}
비활성화 상태의 버튼의 배경 이미지 설정 :
UIImage * disabledBgImage = [originalBgImage translucentImageWithAlpha:0.5f];
[button setBackgroundImage:disabledBgImage forState:UIControlStateDisabled];
결국나요? – bryanmac
이 질문에 대한 해결책을 찾는데도 관심이 있습니다. – SAHM
나는이 질문에 대한 대답이 여기에 추가되었다고 생각한다. http://stackoverflow.com/questions/3467119/avoiding-making-a-uibutton-transparent-see-through-when-disabling-it –