Если вы хотите деформировать представления, вам понадобится либо OpenGL, либо вы можете использовать CAShapLayer в Core Animation, который позволяет вам указать путь Безье, который может содержать эту кривую.Но имейте в виду, что эта кривая, которую вы видите, скорее всего, просто оптическая иллюзия (хотя на вашем изображении выше она выглядит как реальная кривая).Если вы получите достаточно прямоугольников с правильным вращением оси Y в ряд, я думаю, что вы можете получить эффект, который вы ищете, с прямой базовой анимацией.Я почти уверен, что именно так все и реализовано в демонстрационных программах Core Animation, которые Apple представила пару лет назад.Вот скриншот из видео с этой презентации:
Я немного повредил с преобразованием слоя вида и придумал следующее:
- (IBAction)sliderDidChange:(id)sender
{
CGFloat value = [(UISlider*)sender value];
CGFloat xOff = value - 0.5;
CATransform3D trans = CATransform3DIdentity;
trans.m34 = 1.0f / -1000.0f;
trans = CATransform3DRotate(trans, degreesToRadians(xOff * -25.0f), 0.0f, 1.0f, 0.0f);
trans = CATransform3DTranslate(trans, 0.0f, 0.0f, 900.0f * fabs(xOff));
[[frameView layer] setTransform:trans];
CGPoint center= [frameView center];
[frameView setCenter:CGPointMake(1024.0 * value, center.y)];
}
Я бросил вместе демонстрационный проект , который показывает, как вращение работает в ответ на слайдер.Он не использует представление прокрутки, поэтому вам придется адаптировать его, но я думаю, что вы можете отслеживать текущее смещение прокрутки и соответственно применять преобразование.Не уверен, что это поможет, но это так.