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];

ドキュメントを調べたところ、UIViewaddSubviewは非推奨になる可能性があると思いましたが、それでもこのようになっています。

この警告を解決する方法を知っている人はいますか?よろしくお願いします。

4

3 に答える 3

4

addSubviewUIViewが応答するメソッドです。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 に答える