0

XIBにUISegmentedControlを設定しています。viewDidLoadに表示し、ユーザーが画面の領域をタップすると表示され、ユーザーがもう一度タップすると非表示になり、ユーザーがそのままにしておくとフェードアウトします。

これを管理する方法を探していると、UIViewのフェードについて多くのことがわかりましたが、個々のサブビューのフェードについてはそれほど多くなく、XIBの要素のフェードについてはほとんどありません。UIViewのものを適応させようとしましたが、失敗しました。

どうすればこれを機能させることができますか?

編集: さて、viewDidLoadの外観とフェードアウトが機能しています。ただし、ユーザーがUISegmentedControlが存在する領域(alpha = 0のために非表示になっている)をタップしても、何も起こりません。これは私が使用しているコードです:

- (IBAction)tapInvisibleSegContr
//This is connected to the UISegmentedControl with the action Touch Up Inside.  Until now, the segmented control has been at alpha=0 since fading after viewDidLoad.
{
    self.segContrAsOutlet.alpha=1.0;
    [self fadeMethodThatWorksInViewDidLoad];
    NSLog(@"Yup, tapped.");
}

NSLogも取得していません。アクションはUISegmentedControlに接続されており、アクションはTouchUpInsideです。私は何が欠けていますか?

4

2 に答える 2

3

それがxibに常駐している場合は、アルファを0に設定し、適切に接続します。値のアウトレットとIBActionが変更されます。
次に、書き込みのviwDidLoad直後に[super viewDidLoad]

[UIView animateWithDuration:1 animations:^{self.mySegOutlet.alpha = 1;}];

最後の書き込みの前に回答をコーディングした直後のIBAction内}

[UIView animateWithDuration:1 animations:^{self.mySegOutlet.alpha = 0;}];

これが最も簡単な方法です。
さよなら

于 2012-08-29T06:28:23.310 に答える
1

xibで、コントロールのアルファを0.0に設定してから、UIViewアニメーションメソッドを使用してアルファを1.0にアニメーション化します。例えば:

[UIView animateWithDuration:1.0 animations:^{
    self.segmentedControl.alpha = 1.0f;
}];

編集:呼び出されたアクションが取得されないという問題に対して、値が変更されたコントロールイベントにアタッチしてみてください-UISegmentedControlが内部の修正のために送信するとは思わない。

于 2012-08-29T06:23:45.830 に答える