1

画面外にあるUIViewがあり、フレームをアニメーション化して、ビューが下から画面外にスライドして表示されるようにしています。ビューの UILabel のアルファ プロパティも同時にアニメーション化して、フェードインしたいと思います。残念ながら、ビューが画面外にあり、定着していないように見えるため、アルファ アニメーションを実行できないようです。次のようになります。

    nextCell.titleLabel.alpha = 0;
   [UIView animateWithDuration:collapsedAnimationDuration animations:^{
                        CGRect newFrame = lastCell.frame;
                        newFrame.origin = CGPointMake(lastCell.frame.origin.x , lastCell.frame.origin.y + THREAD_CELL_HEIGHT);
                        nextCell.frame = newFrame;
                        nextCell.titleLabel.alpha = 1;
                    }];

サブビューがオフスクリーンであるため、サブビューのアルファのアニメーション化を開始することはできませんか? ビューを画面に配置してからアニメーションを試してみると、見た目は素晴らしいですが、それは私が求めている効果ではありません。ご協力いただきありがとうございます。

4

2 に答える 2

3

このコードは で実行されcellForRowAtIndexPathますか? その場合は、 に移動してみてくださいtableView:willDisplayCell:forRowAtIndexPath:。テーブル ビューは、セルを表示する前に、セルのさまざまなプロパティをリセットします。

于 2013-08-28T21:52:32.137 に答える
0

AppDelegate didFinishLaunching メソッドから:

self.myView = [[MyView alloc] initWithFrame:CGRectMake(320, 480, 400, 400)];
self.myView.titleLabel.text = @"test text";

self.myView.titleLabel.alpha = 0;
[UIView animateWithDuration:10.0 animations:^{
    CGRect newFrame = self.myView.frame;
    newFrame.origin = CGPointMake(0 , 0);
    self.myView.frame = newFrame;

    self.myView.titleLabel.alpha = 1;
}];

[self.viewController.view addSubview:self.myView];

MyView はまさにこれです:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self addSubview:self.titleLabel];
    }
    return self;
}

- (UILabel *)titleLabel
{
    if (!_titleLabel) {
        _titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
    }
    return _titleLabel;
}

提示されたコードに重要な変更を加えておらず、正常に機能しました。したがって、Tim が述べたことを実行していないと仮定すると (実行している場合は機能しません)、さらに詳しい情報が必要です。

于 2013-08-29T07:34:44.220 に答える