У меня есть ситуация, когда у меня есть подкласс UIView с UIScrollView в качестве члена.
Я анимирую изменение размера UIView и изменяю размер scrollview с его помощью.UIScrollView - это бесконечная галерея изображений (т. Е. 3 представления, которые обмениваются контентом во время подкачки)
[UIView animateWithDuration: ...
, когда я анимирую код, в блоке анимации у меня есть
myView.frame = someNewFrame;
Я думал, что анимация будет интерполировать промежуточные размеры кадра при анимации.т.е. делать вызов во время каждого кадра анимации:
[myView setFrame: someIntermediateFrame];
Поэтому я переопределил метод setFrame myView:
-(void)setFrame:(CGRect)frame
{
[super setFrame:frame];
[self resizeSubviews];
}
- (void)resizeSubviews
{
CGRect frame = self.bounds;
scrollView.frame = frame;
scrollView.contentSize = CGSizeMake(frame.size.width * 3.0, frame.size.height); // 3 pages
[scrollView setContentOffset:CGPointMake(frame.size.width, 0.0) animated:NO]; // set contentOffset to middlePage
[scrollView setNeedsDisplay]; // just in case. don't know if this is necessary. Currently not helpful.
frame.origin.x = 0.0;
frame.origin.y = 0.0;
pageZeroRect = frame;
self.pageZero.frame = frame;
frame.origin.x += frame.size.width;
pageOneRect = frame;
self.pageOne.frame = frame;
frame.origin.x += frame.size.width;
pageTwoRect = frame;
self.pageTwo.frame = frame;
}
Никакой анимации не происходит, кроме содержащего представления.Scrollview (и subviews) просто переходит к своему окончательному значению.
Есть идеи, что не так?Это просто не имеет смысла.Все выглядит хорошо, но под капотом должно быть что-то еще, о чем я не знаю.Я программирую iOS уже 1,5 года, и поэтому я не очень опытный, но и не слишком тупой.