2013-03-26 6 views
7

私は、ナビゲーションバーの証明サブビューのアルファベットをアニメーション化する際にいくつかの問題を経験しています。ここでは、バーの初期状態は次のとおりです。ここでiOS - ナビゲーションバーのサブビューを透明にする方法

​​

は、私は今では手に入れたどのくらいです:

enter image description here

事は私がすべてのこの「星」を作成する必要があるということです、 "new"、およびその他の丸いボタンが透明になります(アルファをゼロにする必要があります)。私は、所望の結果を達成することができませんでした、しかし

//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 
    } 
} 

:私は全く同じコードを実行し、それらのすべてにおいて

- (void)searchBarCancelButtonClicked:(UISearchBar *)asearchBar 
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar 
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 

:私は、デリゲートの次のような方法でそれらを透明にしようとしていますこの方法では、NSLogで右アルファ値を取得していますが、ボタンはまったく消えません。私が間違って何をすることができるかについての示唆はありますか?

EDIT 1:

私は私が私の場合、ビュー階層のいくつかの説明を追加すべきだと思います。まあ、私はこれらの丸いボタンと2つのUIImageViews、セグメント化されたコントロールのバックグラウンド、および三角形のポインタを保持するUISegmentedConrolを持っています。これらのビューはすべてサブビューとしてナビゲーションバーに追加されます。また、検索バーを保持する長方形のビューがあり、後でナビゲーションバーにサブビューとして追加されるため、階層内のトップビューになります。また、スーパービューのフレームをアニメーション化するだけでsearchBarのアニメーションを作成しています(上記のイベントがデリゲートで発生した場合には、拡大または縮小します)。私はすべての必要な情報を与えたことを願っています。

+0

uのみボタンまたはUISearchバーもありますか? – iPatel

+0

シーン全体をオーバーレイするカスタムUITextFieldを使用してください。 –

+0

検索バーがアクティブでないときにボタンをアクティブにしたい、検索バーがアクティブなときにボタンが表示されないようにする。 – morgan1189

答えて

1

私はプログラミングをして以来、しばらくしていました。アルファを設定していても、再描画をトリガしなくても可能です。 [UIView setNeedsDisplay]は、次の描画サイクルで描画を更新するのに役立ちます。参考のため

What is the most robust way to force a UIView to redraw?

+0

申し訳ありませんが、動作しませんでした。 – morgan1189

+2

アルファ設定後にビューを再描画する必要はありません。 – Sulthan

+0

大丈夫です。 – ssinganamalla

1

1)これは、任意のUI更新コードの後に​​この文を書き、UI更新の問題です。

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate date]]; 

これにより、GUIが更新されます。

又は

2)は、メインスレッドでセレクタを実行し、選択方法であなたのUIを更新使用します。

[self performSelectorOnMainThread:@selector(UpdateUIMethod) withObject:self waitUntilDone:NO]; 
関連する問題