0

我试图在加载视图时在按钮上制作动画所以我在 ViewDidLoad 中编写了以下代码

 ScanBtnVIEW.alpha=0;
ScanBtnVIEW=[[UIView alloc]initWithFrame:CGRectMake(78,-10,164,164)];

[self startAnimation];

然后在 viewDidLoad 之外我实现了 StartAnimation 方法如下

-(void)startAnimation{
[UIView animateWithDuration:1.0
                      delay:0.0
                    options: UIViewAnimationOptionCurveLinear
                 animations:^{
                     ScanBtnVIEW.alpha=1;
                     //ScanBtnVIEW=[[UIView alloc]initWithFrame:CGRectMake(78,260,164,164)];
                     ScanBtnVIEW.frame = CGRectMake(78,260,164,164);

                 }
                 completion:^(BOOL finished){
                     NSLog(@"Done!");
                 }];

}

但实际上在从 App 加载视图后,按钮并没有出现。请注意,我将按钮放在 imageView 中,以便我可以轻松应用动画。任何人都可以帮助解决这个问题,我将不胜感激

4

2 回答 2

1

在您的动画块中,您重新分配了ScanBtnView

你可以试试这个:

ScanBtnVIEW.frame = CGRectMake(78,260,164,164)];
于 2013-04-07T02:33:40.710 回答
0

问题 1

在加载视图时尝试在按钮上制作动画

不。加载视图就是:加载视图。正在发生的一切是视图控制器获得了一个self.view. 没有暗示视图即将出现在界面中,实际上可能不会。开始动画的时间是当视图出现在界面中时,例如viewDidAppear:

问题 2

ScanBtnVIEW=[[UIView alloc]initWithFrame:CGRectMake(78,-10,164,164)];

太好了,所以你做了一个 UIView。但是你也从来没有把放在界面中!所以当然你永远不会看到它。你基本上只是创建它,然后把它放在地板上。那有什么意义呢?

问题 3

ScanBtnVIEW.alpha=0;
ScanBtnVIEW=[[UIView alloc]initWithFrame:CGRectMake(78,-10,164,164)];

太棒了。所以现在你已经有了一个名为 ScanBtnView 的视图。但后来你把扔掉了,用你创建的一个全新的视图替换它( alloc),然后你把它扔在地板上!有多奇怪?

很可能,您的意思是:

ScanBtnVIEW.alpha=0;
ScanBtnVIEW.frame = CGRectMake(78,-10,164,164)];
于 2013-04-07T06:07:55.930 回答