ビューを開いたり閉じたりするために使用したいボタンがあります...
矢印です。開くと矢印が180°回転します。
そして閉じるとき、それは180°後ろに回転するはずです。
ただし、開いている間は1回だけ回転しますが、閉じたときに再び回転することはありません。さらに、もう一度開くと、最初に開いても再び回転しません。
コードは次のとおりです。
- (id)initWithFrame:(CGRect)frame
{
mediaOpened = NO;
media = [UIButton buttonWithType:UIButtonTypeCustom];
[media retain];
[media setBackgroundImage:[ImageController getImageNamed:@"arrow.png"] forState:UIControlStateNormal];
[media addTarget:self action:@selector(toggleMedia) forControlEvents:UIControlEventTouchUpInside];
media.frame = CGRectMake(2, 10, 26, 17);
[self addSubview:media];
}
-(void) rotateMedia {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.3];
float angle = M_PI;
media.transform = CGAffineTransformMakeRotation(angle);
[UIView commitAnimations];
}
-(void) mediaClicked {
if (self.delegate != nil)
[self.delegate mediaClicked];
[self rotateMedia];
}
-(void) mediaUnclicked {
if (self.delegate != nil)
[self.delegate mediaUnClicked];
[self rotateMedia];
}
-(void) toggleMedia {
if (!mediaOpened)
[self mediaClicked];
else
[self mediaUnclicked];
mediaOpened = !mediaOpened;
}