Hey Meltemi,
It sounds like you're on the right track. I'll try to address all of your expectations one at a time:
The views onscreen could be a custom UIView subclass or UIImageViews. You might want to think about other functionality you want to add in the future. The UIView approach offers the most flexibility, and would also allow you to handle rotation by drawing the car image manually. To do that, create a subclass of UIView, give it an image property and a rotation property, and then override the "drawRect:(CGRect)rect" function to draw the image.
Putting an array of the cars in the view controller sounds great.
Storing the initial layout in an Interface Builder NIB file is usually the best bet. It allows you to easily change the interface in the future, and cuts out a lot of boilerplate code that is required to create and position things onscreen.
That said, it's not possible to bind a bunch of views to a single array outlet. In this particular case, I would implement the view controller's "viewDidLoad" function to create several cars. You were on the right track!
It's not possible to setup rotation in Interface Builder because it's not a popular option. You can implement rotation using CAAnimation transforms to set a rotation property and then manually draw the image at an angle.
Hope that helps!
EDIT: Here's some sample code to draw an image at an angle. It uses Quartz (also known as Core Graphics) - so there's a lot more information available in the Apple documentation
- (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);
}