나는 하이라이트 된 이미지를 변경하는 UIButton을 가지고있다. UIControlStateHighlight에서 UIControlStateNormal로 전환 할 때 강조 표시된 이미지가 천천히 원래 이미지로 사라지게하고 싶습니다. 이 작업을 수행하는 쉬운 방법이 있습니까?UIControl/UIButton의 한 상태에서 다른 상태로 애니메이션을 전환하는 방법은 무엇입니까?
1
A
답변
1
결국 UIButton을 하위 클래스로 분류했습니다. 다음은 구현 파일 코드입니다. 나는 약간의 응용 프로그램 특정 물건을했다, 그래서 나는이 정확한 코드를 테스트하지 않은,하지만 괜찮을한다 :
#import "SlowFadeButton.h"
@interface SlowFadeButton()
@property(strong, nonatomic)UIImageView *glowOverlayImgView; // Used to overlay glowing animal image and fade out
@end
@implementation SlowFadeButton
-(id)initWithFrame:(CGRect)theFrame mainImg:(UIImage*)theMainImg highlightImg:(UIImage*)theHighlightImg
{
if((self = [SlowFadeButton buttonWithType:UIButtonTypeCustom])) {
self.frame = theFrame;
if(!theMainImg) {
NSLog(@"Problem loading the main image\n");
}
else if(!theHighlightImg) {
NSLog(@"Problem loading the highlight image\n");
}
[self setImage:theMainImg forState:UIControlStateNormal];
self.glowOverlayImgView = [[UIImageView alloc] initWithImage:theHighlightImg];
self.glowOverlayImgView.frame = self.imageView.frame;
self.glowOverlayImgView.bounds = self.imageView.bounds;
self.adjustsImageWhenHighlighted = NO;
}
return self;
}
-(void)setHighlighted:(BOOL)highlighted
{
// Check if button is going from not highlighted to highlighted
if(![self isHighlighted] && highlighted) {
self.glowOverlayImgView.alpha = 1;
[self addSubview:self.glowOverlayImgView];
}
// Check if button is going from highlighted to not highlighted
else if([self isHighlighted] && !highlighted) {
[UIView animateWithDuration:1.0f
animations:^{
self.glowOverlayImgView.alpha = 0;
}
completion:NULL];
}
[super setHighlighted:highlighted];
}
-(void)setGlowOverlayImgView:(UIImageView *)glowOverlayImgView
{
if(glowOverlayImgView != _glowOverlayImgView) {
_glowOverlayImgView = glowOverlayImgView;
}
self.glowOverlayImgView.alpha = 0;
}
@end
당신은 또한 단지 [self imageForState:UIControlStateHighlighted]
에서 강조 표시된 이미지를 끌어와 그것을 사용할 수 있습니다, 그것은 작동합니다 같은. 중요한 것은 adjustsImageWhenHighlighted = NO
을 확인한 다음 setHighlighted:
메서드를 재정의하는 것입니다.
관련 문제
- 1. Ember - 한 상태에서 다른 상태로 전환합니다.
- 2. 한 UIViewController에서 다른 UIViewController로 전환하는 방법은 무엇입니까?
- 3. 한 탭에서 다른 탭으로 전환하는 방법은 무엇입니까?
- 4. onActivityStart와 onBackPressed 이벤트간에 애니메이션을 전환하는 방법은 무엇입니까?
- 5. 애니메이션을 사용하여 UINavigationBar에서보기를 전환하는 방법은 무엇입니까?
- 6. jQuery 2.0에서 애니메이션을 전환하는 방법은 무엇입니까?
- 7. 한 애니메이션을 다른 애니메이션과 병합하는 방법은 무엇입니까?
- 8. 하나의 프로필과 다른 프로필을 전환하는 방법은 무엇입니까?
- 9. datagridrow 상태에서 다른 배경색을 데이터 상태로 설정하기
- 10. onStop() 상태에서 onRestart() 상태로 전환
- 11. 자바 스크립트를 초기화하여 onload 상태로 전환하는 방법은 무엇입니까?
- 12. UI ui-router로 빈 상태로 전환하는 방법은 무엇입니까?
- 13. 단위 테스트에서 ui-router 상태로 전환하는 방법은 무엇입니까?
- 14. UIWebView가 이미로드 된 상태에서 빈 상태로 만드는 방법은 무엇입니까?
- 15. 한 활동에서 다른 활동으로 전환하는 시간을 줄이는 방법은 무엇입니까?
- 16. twilio의 한 대기열에서 다른 대기열로 통화를 전환하는 방법은 무엇입니까?
- 17. 전환을 사용하여 CSS 애니메이션의 끝 상태에서 전환하는 방법이 있습니까?
- 18. Glow ImageButton의 상태에서 상태로 애니메이션
- 19. 프로그래밍 방식으로 다른 PanoramaItem으로 전환하는 방법은 무엇입니까?
- 20. 정지시 애니메이션을 Raphael에서 초기 상태로 재설정하는 방법은 무엇입니까?
- 21. 다른 log4perl 구성간에 전환하는 방법은 무엇입니까?
- 22. 다른 ul li의 내용을 전환하는 방법은 무엇입니까?
- 23. Magento의 다른 매장보기로 전환하는 방법은 무엇입니까?
- 24. WPF 애니메이션을 부드럽게하는 방법은 무엇입니까?
- 25. 데이터베이스를 전환하는 방법은 무엇입니까?
- 26. 특정 상태에서 다른 상태로 전환 할 때 작업을 실행 하시겠습니까?
- 27. glink 태그를 사용하여 grails webflow plugin에서 하나의 뷰 상태에서 다른 뷰 상태로 이동하는 방법은 무엇입니까?
- 28. Jenkins PMD를 안정 상태에서 실패 상태로 승격
- 29. 산성 상태에서 일련의 이벤트를 원자 상태로 만들기
- 30. 애니메이션을 앞으로 실행 한 다음 원래 상태로 되돌릴