Ios 重初始化会导致UIView动画在第一次尝试时不设置动画?
考虑到我的调色板的框架是这样的:Ios 重初始化会导致UIView动画在第一次尝试时不设置动画?,ios,uiview,uiviewanimation,Ios,Uiview,Uiviewanimation,考虑到我的调色板的框架是这样的: _palette.frame = CGRectMake(0,480,320,200); 我这里有一段代码,可以在UIView上/下滑动: if(![_pallete superview]) { [self.view addSubview:_pallete]; [self.view insertSubview:_tempViewPaletteListener belowSubview:_pallete]; [UIView animateWithDuration
_palette.frame = CGRectMake(0,480,320,200);
我这里有一段代码,可以在UIView上/下滑动:
if(![_pallete superview]) {
[self.view addSubview:_pallete];
[self.view insertSubview:_tempViewPaletteListener belowSubview:_pallete];
[UIView animateWithDuration:0.3
animations:^{
_pallete.top -= kPaletteHeight;
}
completion:^(BOOL isFinished) {
}];
} else {
[UIView animateWithDuration:0.3
animations:^{
_pallete.top += kPaletteHeight;
}
completion:^(BOOL isFinished) {
[_tempViewPaletteListener removeFromSuperview];
[_pallete removeFromSuperview];
}];
}
*_tempViewPaletteListener只是一个带有点击手势的视图,用于关闭调色板*
问题是,当我第一次尝试在这里运行代码时,_调色板视图将立即僵硬地显示出来。
我所期望的是,它应该在调色板视图中向上滑动
虽然第一次尝试后效果很好
更新:
从UIView动画更改的问题标题第一次尝试时不设置动画?重初始化导致UIView动画在第一次尝试时不设置动画
我上面的代码运行良好,只是在调用动画之前,我布局了调色板视图和加载项
我注意到,当我不添加颜色选择器,只添加一个平面视图来制作动画时,动画效果很好,当然就这么简单,它应该
问题是颜色选择器的创建太重了,我想,这就是为什么它不能显示向上滑动的动画的原因,正如Borrden在评论中所说的,它看起来没有动画可显示,因为当您向视图添加托盘时,它已经处于完成动画的位置:尝试以下操作:
if(![_pallete superview]) {
_pallete.top += kPaletteHeight;
[self.view addSubview:_pallete];
[self.view insertSubview:_tempViewPaletteListener belowSubview:_pallete];
[UIView animateWithDuration:0.3
animations:^{
_pallete.top -= kPaletteHeight;
}
completion:^(BOOL isFinished) {
}];
} else {
[UIView animateWithDuration:0.3
animations:^{
_pallete.top += kPaletteHeight;
}
completion:^(BOOL isFinished) {
[_tempViewPaletteListener removeFromSuperview];
[_pallete removeFromSuperview];
}];
}
您确定添加托盘时top是正确的吗?您可能使用完成的矩形创建它,因此它不会设置任何动画,但是当您使用退出动画更改它时,它下次将具有正确的值。top属性是什么?设置它时发生了什么?它不是UIView.ohh的默认属性之一,我忘了它是从类别UIView+Additions快捷方式设置frame.origin.ydependent的,取决于您使用的RSColorPicker的哪个版本可能有一个禁用动画的错误,该错误已修复。另外,正如你所提到的,颜色选择器需要一些能力来生成,最近也得到了改进,你可以在显示它之前强制它在背景中生成。但最初我的调色板的框架位于视图的底部,我将更新我的问题我已更新我的问题。我的问题是,在第一个动画之前,我的调色板视图仍然为零,所以我为它创建了一个视图,我想,创建过程非常繁重
if(![_pallete superview]) {
_pallete.top += kPaletteHeight;
[self.view addSubview:_pallete];
[self.view insertSubview:_tempViewPaletteListener belowSubview:_pallete];
[UIView animateWithDuration:0.3
animations:^{
_pallete.top -= kPaletteHeight;
}
completion:^(BOOL isFinished) {
}];
} else {
[UIView animateWithDuration:0.3
animations:^{
_pallete.top += kPaletteHeight;
}
completion:^(BOOL isFinished) {
[_tempViewPaletteListener removeFromSuperview];
[_pallete removeFromSuperview];
}];
}