I have an UIView with around 50 UIButtons. All button positions were given in pixels, relative to the left upper corner of my main UIView.
All (background) images us
I ended up using
self.view.transform = CGAffineTransformScale(CGAffineTransformIdentity, 2, 2);
It allowed me to keep the design created in the Interface Builder.
Unfortunately the sharpness of the image suffers in that case, but this is a small price to pay compared to scripting the whole design programmatically.
Update for Swift 3.0
self.view.transform = CGAffineTransform(scaleX: 2.0, y: 2.0)
You can first programmatically create those buttons like example create those buttons using the CGRectMake
method and stating the width and height to be X and Y and multiply by 2 if ipad is detected as for origin it should change respectively too, might cause overlapping if too close to each other
Edit: It all depends on your logic, im unsure too
For Swift 4.0, zoom 2x:
myView.transform = CGAffineTransform.identity.scaledBy(x: 2, y: 2)