我有一个位于屏幕外的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动画,因为它在屏幕外?如果我将视图定位在屏幕上,然后尝试动画,它看起来很棒,但这不是我想要的效果。谢谢你的帮助。
答案 0 :(得分:3)
此代码是否在cellForRowAtIndexPath
中执行?如果是,请尝试将其移至tableView:willDisplayCell:forRowAtIndexPath:
。表格视图在显示之前重置单元格的各种属性。
答案 1 :(得分: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提到的事情(如果你这样做,它将不起作用),我们需要更多的细节来帮助你。