Взгляните на 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, который (по умолчанию) не будет учитывать ориентацию интерфейса.