1

我收到了这个警告:

'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 可能已被弃用,但它仍然是这样的。

有谁知道如何解决这个警告?提前谢谢。

4

3 回答 3

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;
}];
于 2012-06-18T06:42:59.550 回答
1

要将子视图添加到父视图,请调用父视图的 addSubview: 方法。此方法将子视图添加到父级子视图列表的末尾。要在父视图列表的中间插入子视图,请调用父视图的任何 insertSubview:... 方法。在列表中间插入一个子视图在视觉上将该视图置于列表后面的任何视图之后。

[self.masterView addSubView:self.def];
[def release];
于 2012-06-18T07:04:48.037 回答
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];}];
    }

只需更改框架原点即可实现自由滑动

于 2013-02-13T18:17:57.023 回答