Да, поскольку UISwitch является элементом управления фиксированной ширины, задает и определяет свой собственный размер, вы можете просто создать его с помощью CGRectZero и затем проверить его размеры через его рамку. Это работает в iOS4 и iOS5.
В iOS 4 вы получите ширину 94 пикселей, а в iOS 5 - 79 пикселей. Вы делаете это так:
UISwitch *mySwitch = [[[UISwitch alloc] initWithFrame:CGRectZero] autorelease];
width = mySwitch.frame.size.width;
Затем вы можете использовать значение ширины для соответствующего позиционирования в родительском представлении. Сделайте это, установив желаемое положение x, y в кадре UISwitch.
Также я предлагаю вам установить значения полей AutoResizingMask на переключателе UIS таким образом, чтобы он оставался в том положении, в котором вы его устанавливаете, независимо от ориентации или типа устройства.