ナビゲーション バーの特定のサブビューのアルファをアニメーション化する際に、いくつかの問題が発生しています。バーの初期状態は次のとおりです。
これが私が今までにどこまで到達したかです:
問題は、検索がアクティブなときに、この「スター」、「新規」、およびその他の丸いボタンをすべて透明にする必要があることです (アルファをゼロに減らす必要があります)。デリゲートの次のメソッドでそれらを透過的にしようとしています:
- (void)searchBarCancelButtonClicked:(UISearchBar *)asearchBar
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
それらのすべてで、まったく同じコードを実行します。
//parent is just a pointer of a search delegate, which points to view controller
for (UIView * someViewToFade in parent.navigationController.navigationBar.subviews) {
if (someViewToFade.tag == 88 || someViewToFade.tag == 11) {
NSLog("someViewToFade.alpha before changes = %f", someViewToFade.alpha);
someViewToFade.alpha = 0.0; //or 1.0, depending on the method
}
}
ただし、この方法では目的の結果を達成できませんでしたが、その NSLog で正しいアルファ値を取得していますが、ボタンはまったくフェードしません。私が間違っている可能性があることについて何か提案はありますか?
編集1:
私の場合、ビュー階層の説明を追加する必要があると思います。さて、これらの丸いボタンと 2 つの UIImageView、セグメント化されたコントロールの背景、および三角形のポインターを保持する UISegmentedConrol があります。これらのビューはすべて、サブビューとしてナビゲーション バーに追加されます。また、検索バーを保持する長方形のビューもあり、後でナビゲーション バーにサブビューとして追加されるため、階層のトップ ビューになります。また、スーパービューのフレームをアニメーション化するだけで searchBar をアニメーション化しています (デリゲートで上記のイベントが発生したときに、フレームを拡大または縮小します)。必要な情報をすべて提供したことを願っています。