У меня есть это subview, которое я хочу добавить к своему основному виду, но сделайте его расширяющимся из источника. Я прочитал некоторые документы Apple, но я не понимаю, где я ошибаюсь. Я могу анимировать происхождение кадра, т.е. Заставлять его перемещаться туда, где угодно, но ширина/высота не кажутся анимированными. Код выглядит следующим образом:
[UIView beginAnimations:@"animateAddContentView" context:nil];
[UIView setAnimationDuration:0.4];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
[self.view addSubview:customView];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
[UIView commitAnimations];
Я также попытался помещать только часть setFrame в анимацию следующим образом:
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
[self.view addSubview:customView];
[UIView beginAnimations:@"animateAddContentView" context:nil];
[UIView setAnimationDuration:0.4];
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
[UIView commitAnimations];
Но это все еще не работает!
ИЗМЕНИТЬ:
В соответствии с предложениями я переместил его в решение для анимации на основе блоков, и это точный код:
NSLog(@"yourview : %@",customView);
customView.frame= CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 0, 150);
NSLog(@"yourview : %@",customView);
[self.view addSubview:customView];
NSLog(@"yourview : %@",customView);
// [customView setFrame:CGRectMake( 0.0f, 480.0f, customView.frame.size.width, customView.frame.size.height)];
[UIView animateWithDuration:0.4
delay:0
options:UIViewAnimationCurveEaseInOut
animations:^ {
NSLog(@"yourview : %@",customView);
customView.frame = CGRectMake(self.view.frame.origin.x +5, self.view.frame.origin.y +5, 310, 150);
NSLog(@"yourview : %@",customView);
}completion:^(BOOL finished) {
}];
Что по какой-то причине по-прежнему не работает. Возможные проблемы, которые я вижу, следующие:
- Я загружаю этот customView из
nib
, а именно 310 на 150, возможно, это вызывает проблему. - Я не импортирую правильные фреймворки, но поскольку я могу анимировать части frame.origin этого представления, я не уверен, что это так... У меня есть
QuartzCore
иCore Graphics
все импортированные и другие.
В каждой точке журнала он дает правильные вещи: например, перед целевым кадром размер равен 0, 150, а после того, как я установил фрейм его 310, 150. Но анимация не работает!