在另一个子视图之后添加子视图
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之间的区别