2009-07-27 14 views
1

Ich möchte nur eine einfache Animation realisieren, wo ein Bild in ein paar Sekunden nach dem Beginn der Anwendung ausgeblendet wird und dann sollte es ausgeblendet werden und vollständig verschwinden. Ich habe noch nie Animationen auf dem iPhone gemacht, also stecke ich fest. Wenn so etwas image.opacity = 1.0; wie in der Dokumentation für Entwickler mit erhalte ich Fehler:Einfache Animation mit NSTimer und Opazität für das iPhone

request for member 'opacity' in something not a structure or union.

Antwort

4

Um ein Bild verblassen, möchten Sie Code wie:

[UIView beginAnimations]; 
myImageView.opacity = 0.0; 
[UIView commitAnimations]; 

Sie sind nicht die Opazität der Bildeinstellung selbst so viel wie die Opazität des UIImageView (in diesem Beispiel myImageView) das Bild enthält. Sie können auch die Dauer der Animation steuern, indem Sie eine Zeile hinzufügen:

[UIView setAnimationDuration: 1.5]; 

zwischen den Anrufen zu -beginAnimations und -commitAnimations.

2

Was Sie suchen, ist die Eigenschaft "alpha", wie in view.alpha. Sie haben einfach nach dem falschen Namen gesucht.

Rechtliche Alphawerte sind von 0,0 (vollständig transparent) bis 1,0 (vollständig undurchsichtig). Es wird genau das tun, wonach Sie suchen.

Verwenden Sie das Paradigma beginAnimations/commitAnimations, auf das im obigen Kommentar verwiesen wird.

0

Fasst die anderen Antworten:

Um ein Bild zu verblassen, möchten Sie Code wie:

// This line may not be necessary. 
myImageView.alpha = 1.0f; 

[UIView beginAnimations]; 
[UIView setAnimationDuration: 1.5]; 
myImageView.alpha = 0.0; 
[UIView commitAnimations]; 
0

die Lösung oben nicht in meinem Projekt nicht funktioniert. Ich hatte es so zu tun ....

**[UIView beginAnimations:@"myPic.png" context:nil];** 
    //You need to set the pic name 

[UIView setAnimationDuration: myTimer]; 
_myPic.alpha = 1.0f; 
_myPic.alpha = 0.0; 
[UIView commitAnimations]; 

Dies ist ein Bild verblassen

Grüße Philipp

0

Es scheint, dass Sie einen Fade wollen und dann einen Fade-Out. Aber Zeit, um nach einer Dauer zu treten. Nicht nur die Dauer der Animationen selbst.

Ich mache nicht normal Sachen für iOS, also vergib mir, wenn ich den Code an der falschen Stelle habe.

Dies wurde am Simulator und in einer einzigen Ansicht-Anwendung getestet.

Ich habe eine neue UIview zur UIView des ViewControllers hinzugefügt und diese mit ihrer .h-Datei als Outlet verknüpft. (nannte es theView)

Dann eine UImageView der neuen UIView (theView) hinzugefügt und ein Bild für die UImageView mit dem Attribut Inspektor festlegen.

enter image description here

hinzugefügt Dann Code in die Datei ViewController.m.

Die Hauptsache ich möchte Ihnen zeigen, ist die

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay

, die ein Verfahren des Empfängers auf den aktuellen Thread nach einer Verzögerung mit dem Standard-Modus aufruft.

(Es gibt ähnliche Methoden, die auf anderen Threads ausführen kann ...)

I zwei Methoden ein vorgenommen haben, die in ein und verblasst, die aus verblaßt.

Es gibt zwei performSelectors.

Die erste wird aufgerufen, wenn die Ansicht geladen wird.

Die Sekunde ist im fadeIn Animationsblock. Sie können dies in der viewDidLoad oder nach dem Block platzieren. Aber ich dachte, es wäre sicherer, es dort zu haben, wo es ist.

Hier ist der .m-Dateicode.

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    _theView.alpha = 0.0; 
    [self performSelector:@selector(fadeIn) withObject:nil afterDelay:2.0]; 
} 


- (void)fadeToBlack 
{ 
    [UIView animateWithDuration:3.0 
          delay:0.0 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{_theView.alpha = 0.0;} 
        completion:nil]; 
} 

- (void)fadeIn 
{ 

    [UIView animateWithDuration:3.0 
          delay:0.0 
         options:UIViewAnimationOptionCurveEaseIn 
        animations:^{_theView.alpha = 1.0; [self performSelector:@selector(fadeToBlack) withObject:nil afterDelay:10.0];} 
        completion:nil]; 


} 


- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

@end 

Ich erwarte hier Korrekturen ... da dies ich mit (Viewcontrollers) nicht wirklich ein Bereich ist, bin voll vertraut Aber seine Werke in der SIM-ok.

Verwandte Themen