Как получить размер экрана iPhone, чтобы дать расчет?
Как получить размер экрана с помощью кода на iOS?
Ответ 1
Вы можете использовать свойство bounds
для экземпляра UIScreen:
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenWidth = screenSize.width;
CGFloat screenHeight = screenSize.height;
Большинству людей нужен главный экран; если у вас есть устройство, подключенное к телевизору, вы можете вместо этого перебрать UIScreens и получить границы для каждого.
Больше информации в документации UIScreen.
Ответ 2
Вот "быстрое" решение: (Обновлено для swift 3.x)
let screenWidth = UIScreen.main.fixedCoordinateSpace.bounds.width
let screenHeight = UIScreen.main.fixedCoordinateSpace.bounds.height
Он отображает точки, а не пиксели, и "всегда отражает [s] размеры экрана устройства в книжной ориентации" (Apple Docs). Не нужно беспокоиться о UInnoyinglyLongDeviceOrientation!
Если вы хотите, чтобы ширина и высота отражали ориентацию устройства:
let screenWidth = UIScreen.main.bounds.width
let screenHeight = UIScreen.main.bounds.height
Здесь ширина и высота будут отображать значения в зависимости от того, находится ли экран в книжной или альбомной ориентации.
А вот как получить размер экрана в пикселях, а не в точках:
let screenWidthInPixels = UIScreen.main.nativeBounds.width
let screenHeightInPixels = UIScreen.main.nativeBounds.height
Это также "основано на устройстве в книжной ориентации. Это значение не изменяется при вращении устройства". (Apple Docs)
Обратите внимание, что для swift 2.x и ниже вы должны использовать UIScreen.mainScreen()
вместо UIScreen.main
Ответ 3
Используйте этот код для исправления в iOS8:
float SW;
float SH;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (( [[[UIDevice currentDevice] systemVersion] floatValue]<8) && UIInterfaceOrientationIsLandscape(orientation))
{
SW = [[UIScreen mainScreen] bounds].size.height;
SH = [[UIScreen mainScreen] bounds].size.width;
}
else
{
SW = [[UIScreen mainScreen] bounds].size.width;
SH = [[UIScreen mainScreen] bounds].size.height;
}
Ответ 4
Используйте свойство bounds
of UIView
, если вы хотите узнать размер определенного вида или [[UIScreen mainScreen] bounds]
, если хотите узнать размер экрана устройства.
Ответ 5
Как и выше, но немного меньше подробностей:
CGFloat screenWidth = [[UIScreen mainScreen] bounds].size.width;
CGFloat screenHeight = [[UIScreen mainScreen] bounds].size.height;
Ответ 6
float screen_Height;
float screen_Width;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
screen_Height = [[UIScreen mainScreen] bounds].size.height;
screen_Width = [[UIScreen mainScreen] bounds].size.width;
} else {
screen_Height = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width);
screen_Width = ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height);
}
Ответ 7
Вот быстрый способ получить размеры экрана:
var screenWidth: CGFloat {
if UIInterfaceOrientationIsPortrait(screenOrientation) {
return UIScreen.mainScreen().bounds.size.width
} else {
return UIScreen.mainScreen().bounds.size.height
}
}
var screenHeight: CGFloat {
if UIInterfaceOrientationIsPortrait(screenOrientation) {
return UIScreen.mainScreen().bounds.size.height
} else {
return UIScreen.mainScreen().bounds.size.width
}
}
var screenOrientation: UIInterfaceOrientation {
return UIApplication.sharedApplication().statusBarOrientation
}
Они включены как стандартная функция здесь.
Это также содержится в документации.
Ответ 8
[[UIScreen mainScreen] bounds] возвращает физические размеры экрана, не учитывающие ориентацию устройства.
Если вам нужно получить размер экрана в соответствии с текущей ориентацией, посмотрите Как получить ориентацию по высоте и ширине экрана?
Ответ 9
Использование границ UIScreen
- хороший способ сделать это, но вы должны использовать функции CGGeometry
для доступа к данным CGRect
, а не к непосредственному доступу к нему. См. CGGeometry
docs.
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = CGRectGetWidth(screenBound);
CGFloat screenHeight = CGRectGetHeight(screenBound);
Ответ 10
Предполагая, что вы хотите учитывать текущую ориентацию, используйте:
float screen_width;
float screen_height;
float vers = [[[UIDevice currentDevice] systemVersion] floatValue];
UIInterfaceOrientation orient = [UIApplication sharedApplication].statusBarOrientation;
if (vers < 8 && UIInterfaceOrientationIsLandscape(orient))
{
screen_height = [[UIScreen mainScreen] bounds].size.width;
screen_width = [[UIScreen mainScreen] bounds].size.height;
}
else
{
screen_width = [[UIScreen mainScreen] bounds].size.width;
screen_height = [[UIScreen mainScreen] bounds].size.height;
}