1

我有一个位于屏幕外的 UIView,我正在为框架设置动画,以便视图从底部滑入屏幕外并且可见。我想同时在视图上为 UILabel 的 alpha 属性设置动画,以便它淡入。不幸的是,我似乎无法执行 alpha 动画,因为视图不在屏幕上并且似乎没有占据。它看起来像这样:

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

是否无法开始为子视图的 alpha 设置动画,因为它在屏幕外?如果我将视图定位在屏幕上,然后尝试动画,它看起来很棒,但这不是我想要的效果。谢谢你的帮助。

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

我没有对您提供的代码进行任何重要更改,并且运行良好。所以假设你没有做蒂姆提到的事情(如果你这样做,它就不会起作用),我们需要更多的细节来帮助你。

于 2013-08-29T07:34:44.220 回答