Взгляните на UIScreen .
например.
CGFloat width = [UIScreen mainScreen].bounds.size.width;
Посмотрите на свойство applicationFrame, если вы не хотите, чтобы строка состояния была включена (не влияет на ширину).
ОБНОВЛЕНИЕ: Оказывается, UIScreen (-bounds или -applicationFrame) не учитывает текущую ориентацию интерфейса. Более правильным подходом было бы спросить у вашего UIView его границы - при условии, что этот UIView был автоматически повернут его контроллером View.
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
CGFloat width = CGRectGetWidth(self.view.bounds);
}
Если вид не поворачивается автоматически контроллером вида, вам необходимо проверить ориентацию интерфейса, чтобы определить, какая часть границ вида представляет «ширину» и «высоту». Обратите внимание, что свойство frame даст вам прямоугольник представления в координатном пространстве UIWindow, которое (по умолчанию) не будет учитывать ориентацию интерфейса.