在另一个子视图之后添加子视图

Posted

技术标签:

【中文标题】在另一个子视图之后添加子视图【英文标题】: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)。所有连接都正常。 另外,这似乎是视图内存问题,当您从超级视图中删除视图时将调用超级视图的释放,所以如果您第二次调用,那么您也需要保留它。 这是不正确的!我根本不需要保留它!事实上,它必须被释放,这就是苹果建议要做的事情的方式。不过感谢您的回复! 【参考方案1】:

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

splashView.alpha = 1.0f;

【讨论】:

不可能这么简单!!!!大声笑你是明星!!!!我真不敢相信我这么笨,居然没看到!

以上是关于在另一个子视图之后添加子视图的主要内容,如果未能解决你的问题,请参考以下文章

在另一个子视图之上检测一个子视图

从另一个方法将子视图添加到子视图

UIView类中addSubview和insertSubview之间的区别

UIImageview 被添加到另一个子视图 UIScrollview 后不显示

隐藏另一个子视图类的子视图

如何搜索子表单并使用数据在另一个子表单中添加记录