UIButtonをトグルスイッチのように使う方法。
プレイボタン → タップ → ストップボタン → タップ → プレイボタン
ボタンに画像を設定する
viewDidLoadなど。画像はアセットカタログに登録済み。
1
2
3
4
5
6
7
8
| // 通常(プレイ)
[_button setImage:[UIImage imageNamed:@"playButton"] forState:UIControlStateNormal];
// プレイでボタンをタップ中
[_button setImage:[UIImage imageNamed:@"stopButton"] forState:UIControlStateHighlighted];
// ストップ
[_button setImage:[UIImage imageNamed:@"stopButton"] forState:UIControlStateNormal | UIControlStateSelected];
// ストップでボタンをタップ中
[_button setImage:[UIImage imageNamed:@"playButton"] forState:UIControlStateHighlighted | UIControlStateSelected];
|
ボタンタップアクション
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| - (IBAction)userButtonTapped:(UIButton *)sender {
sender.selected = !sender.selected; // これが重要(状態を入れ替える)
// プレイをタップ
if (sender.selected) {
_userTimer = [NSTimer scheduledTimerWithTimeInterval:[_userFrameSpeedInfos[0] floatValue]
target:self
selector:@selector(timerUserView:)
userInfo:nil
repeats:YES];
}
// ストップをタップ
else {
[_userTimer invalidate];
}
}
|
おまけ
タイマーが停止した時にボタンをプレイに戻す。
1
2
3
4
5
6
7
8
9
10
11
12
13
| - (void)timerUserView:(NSTimer*)timer
{
int index = ++_userFramIndex;
if (index < [_userFrameImageInfos count]) {
[self displayFrameImageAtIndex:index userDistinction:USER];
}
// タイマーを止める
else {
[timer invalidate];
_userFramIndex = 0;
[_userButton setSelected:NO]; // これでプレイに戻る
}
}
|