[英]Heavy initialization causes UIView animation to not animate at first try?
考慮到我的_palette的框架是這樣的:
_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只是一個帶有輕擊手勢的視圖,用於消除調色板*
問題是,當我第一次嘗試在此處運行代碼時,_palette視圖將立即顯示出來。 我所期望的是,它應該向上滑動_palette視圖。
雖然在第一次嘗試后效果很好
更新:
將問題標題從“ UIView動畫第一次嘗試不設置動畫?”更改為 大量初始化會導致UIView動畫在第一次嘗試時無法動畫?
上面的“我的代碼”工作正常,只是在調用動畫之前,我先布置了調色板視圖並添加了RSColorPicker
- (void)layoutPaletteView {
if(!_colorPicker && !_brightnessSlider) {
// Create Color Picker and Brightness Slider
}
if(!_pallete) {
// Style the Palette View and add color picker and brightness slider as subview
}
}
並且我注意到,當我不添加顏色選擇器並且僅添加普通視圖進行動畫處理時,動畫效果很好(當然應該如此簡單)。
問題是我猜顏色選擇器的創建太重了,這就是為什么它無法顯示向上滑動的動畫的原因
正如borrrden在評論中所說,似乎沒有動畫要顯示,因為當您向視圖中添加_pallete時,它已經處於完成的動畫位置:嘗試以下操作:
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];
}];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.