ボタンのフェードアウト/フェードインアニメーションが必要な場合は、カスタムボタンを、最初の uibutton と同じ背景画像を持つ UIImageview に置き換えることができます。これは、ボタンのアクションで最初にすることです。 uiview に置き換えられ、最初の背景画像から新しい (選択したバージョン) まで、フェードアウト アニメーションを UIImageview に適用できます。アニメーションが終了したら、完了ブロックで、選択した iamge を通常の背景 iamge にフェードアウトする別のアニメーションを開始します。次に、2 番目のアニメーションが終了し、uiimageview を削除して、ボタンを元に戻します。
// uiimageviews を ivar として宣言します
UIImageView *imageViewnormal = [[UIimageView alloc] initWithImage:normalIamge];
UIImageView *imageViewhighlighted = [[UIimageView alloc] initWithImage:highlightImage];
UIControlEventTouchDown
ボタンのアクションで
// make your button invisible
yourbutton.alpha = 0;
//add to same rect 2 imageviews with initial and selected backgrounds of uibutton
imageViewnormal.alpha = 1;
imageViewhighlighted.alpha = 0;
[self.view addSubview:imageViewhighlighted];
[self.view addSubview:imageViewnormal];
// newImageViewWithInitialBackground needs to be inserted secondly and alpha value 1
// newImageViewWithSelectedBackground has alpha 0 and is behind newImageViewWithInitialBackground
[UIView animateWithDuration:0.3
animations:^
{
imageViewnormalalpha = 0;
imageViewhighlighted.alpha = 1;
}
completion:^(BOOL finished)
{
}];
ボタンの UIControlEventTouchUpInside のアクション
[UIView animateWithDuration:0.3
animations:^
{
imageViewnormal.alpha = 1;
imageViewhighlighted.alpha = 0;
}
completion:^(BOOL finished)
{
//Remove both of the uiimageviews aand make your button visible
[imageViewnormal removeFromSuperview];
[mageViewhighlighted removeFromSuperview];
yourbutton.alpha = 1;
}];