'UIView'可能无法响应'addSubview:withAnimation:'

时间:2012-06-18 06:41:26

标签: ios cocoa-touch

我收到了这个警告:

'UIView' may not respond to 'addSubview:withAnimation:'

产生该警告的代码行是:

[self.masterView addSubview:self.detailImage withAnimation:def];

我的相关代码是这样的:

ExUIViewAnimationDefinition *def = [[ExUIViewAnimationDefinition alloc] init];
    def.type = ExUIAnimationTypeTransition;
    def.direction = ExUIAnimationDirectionMoveUp;
    [self.masterView addSubview:self.detailImage withAnimation:def];
    [def release];

我查看了UIView文档,我认为addSubview可能已被弃用,但它仍然是这样的。

有人知道如何解决此警告吗?提前完成。

3 个答案:

答案 0 :(得分:4)

addSubview是UIView将响应的方法。 addSubview:withAnimation:不是UIView会响应的方法。

如果您想添加淡化或类似的子视图,请尝试以下方法:

self.detailImage.alpha = 0.0;
[self.masterView addSubview:self.detailImage];

[UIView animateWithDuration:0.3 animations:^{
    self.detailImage.alpha = 1.0;
}];

答案 1 :(得分:1)

要将父视图添加到父视图,请调用父视图的addSubview:方法。此方法将子视图添加到父视图子视图列表的末尾。 要在父视图子视图列表的中间插入子视图,请调用父视图的任何insertSubview:...方法。在列表中间插入子视图会直观地将该视图放在列表后面的任何视图后面。

[self.masterView addSubView:self.def];
[def release];

答案 2 :(得分:0)

这帮助我通过从父视图的边框向下滑出

来设置子视图的动画
    -(void) addAnimatadView:(UIView *) animatedView toView:(UIView *)aView {
        CGRect frame = animatedView.frame;
        float origin = frame.origin.y;
        frame.origin.y = aView.frame.size.height;
        [animatedView setFrame:frame];
        [aView addSubview:animatedView];
        frame.origin.y = origin;
        [UIView animateWithDuration:0.4 animations:^{[animatedView setFrame:frame];}];
    }

只需更改框架原点即可达到自由滑动