Похоже, вы на правильном пути. Я постараюсь учесть все ваши ожидания по одному:
Представления на экране могут быть пользовательским подклассом UIView или UIImageViews. Возможно, вы захотите подумать о другой функциональности, которую вы хотите добавить в будущем. Подход UIView предлагает большую гибкость, а также позволит вам управлять поворотом, рисуя изображение автомобиля вручную. Для этого создайте подкласс UIView, присвойте ему свойство изображения и свойство поворота, а затем переопределите функцию «drawRect: (CGRect) rect» для рисования изображения.
Помещение массива машин в контроллер вида звучит великолепно.
Лучше всего сохранить исходный макет в файле NIB Interface Builder. Это позволяет вам легко менять интерфейс в будущем и вырезать много стандартного кода, необходимого для создания и размещения объектов на экране.
Тем не менее, невозможно связать несколько представлений с одним выходом массива. В этом конкретном случае я бы реализовал функцию viewDidLoad контроллера представления для создания нескольких автомобилей. Вы были на правильном пути!
Невозможно настроить вращение в Интерфейсном Разработчике, потому что это не популярный вариант. Вы можете реализовать вращение, используя преобразования CAAnimation, чтобы установить свойство вращения, а затем вручную нарисовать изображение под углом.
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Вот пример кода для рисования изображения под углом. Он использует Quartz (также известный как Core Graphics), поэтому в документации Apple доступно гораздо больше информации
- (void)drawRect:(CGRect)r
{
// get the drawing context that is currently bound
CGContextRef c = UIGraphicsGetCurrentContext();
// save it's "graphics state" so that our rotation of the coordinate space is undoable.
CGContextSaveGState(c);
// rotate the coordinate space by 90º (in radians). In Quartz, images are
// always drawn "up," but using CTM transforms, you can change what "up" is!
// Can also use TranslateCTM and ScaleCTM to manipulate other properties of coordinate space.
CGContextRotateCTM(c, M_PI / 2);
// draw an image to fill our entire view. Note that if you want the image to be semi-transparent,
// the view must have opaque = NO and backgroundColor = [UIColor clearColor]!
CGContextDrawImage(c, self.bounds, [[UIImage imageNamed:@"image_file.png"] CGImage]);
// restore the graphics state. We could just rotate by -M_PI/2, but for complex transformations
// this is very handy.
CGContextRestoreGState(c);
}