【问题标题】:addsubview after another subview在另一个子视图之后添加子视图
【发布时间】:2012-01-15 18:25:04
【问题描述】:

我知道它很疯狂,但它就是这样:

我将 splashView 加载到我的应用中:在 viewDidLoad 上:

[self.view addSubview:splashView];    

UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear;
[UIView animateWithDuration:0.5 delay:3.0 options:options animations:^{            
    splashView.alpha = 0.0f;
    splashView.frame = CGRectMake(512,384,-10,-10);
}

completion:^(BOOL finished){                          
    [splashView removeFromSuperview]; 
}];

这里的代码没什么特别的。

但是,当我尝试通过按钮加载与操作相同的视图时 什么都没有发生:

-(IBAction)showSplash:(id)sender {
    [self.view addSubview:splashView];

    UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear;
    [UIView animateWithDuration:0.5 delay:3.0 options:options animations:^{
        splashView.alpha = 0.0f;
        splashView.frame = CGRectMake(512,384,-10,-10);
    }

    completion:^(BOOL finished){ 
        [splashView removeFromSuperview]; 
    }];
}

为什么会这样?

顺便说一句,如果我没有在 viewDidLoad 上加载 splashView,然后使用按钮(动作)它就可以了!

这是正常行为吗?

【问题讨论】:

  • 您如何调用此操作,是通过 xib 还是您编写了一些代码,如果它们是一些代码,那么也发布。否则它应该在这两种情况下都有效。
  • 你看到的是你在编码方面得到的......(没什么花哨的,简单的东西):) 只有一个视图控制器一个 xib(其中有两个 UIviews)。所有连接都正常。
  • 另外,这似乎是视图内存问题,当您从超级视图中删除视图时将调用超级视图的释放,所以如果您第二次调用,那么您也需要保留它。
  • 这是不正确的!我根本不需要保留它!事实上,它必须被释放,这就是苹果建议要做的事情的方式。不过感谢您的回复!

标签: iphone uiview sdk addsubview


【解决方案1】:

在闪现视图淡出之前重置 alpha 值。

splashView.alpha = 1.0f;

【讨论】:

  • 不可能这么简单!!!!大声笑你是明星!!!!我真不敢相信我这么笨,居然没看到!
猜你喜欢
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
相关资源
最近更新 更多