UIButton は背景とアイコンを別に画像指定出来るので、アイコンにあたる UIImageView の transform を使ってアイコン部分だけをアニメーションさせる、ということができる。
例えば、カメラの撮影ボタンの中身だけを画面回転に合わせて動かしたい時などに使える。
UIButton *btn;
[btn setImage:icon forState:UIControlStateNormal]; // アイコン
[btn setBackgroundImage:bg forState:UIControlStateNormal]; // 背景
// 追記: この行を UIViewAnimation で括るとアニメーションになる --
btn.imageView.transform = transform; // CGAffineTransform
// --
ただ、これだけだと transform 適用時にうまく描画されないことがあるので、以下2行を追加する:
btn.imageView.clipsToBounds = NO;
btn.imageView.contentMode = UIViewContentModeCenter;