2014-12-01 1 views
0

У меня есть код для создания кнопки.
Теперь расположение кнопки не может быть правильно выровнено или масштабировано с помощью разных устройств.Программно создайте объект под разными размерами экрана

Я написал следующий код под размером экрана iPhone 6.

UIButton *but= [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     [but addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 
     [but setFrame:CGRectMake(605, 320, 35, 35)]; 
     [but setTitle:@"Login" forState:UIControlStateNormal]; 
     [but setExclusiveTouch:YES]; 
     [self.view addSubview:but]; 

Если я хочу иметь такое же положение для iPhone 6 плюс как iPhone 6. Что я могу сделать?

Большое спасибо.

+0

использования авто макета и добавить Сдерживает к нему или дать ширин, высоту и х, у относительно границы в% [ссылке] (HTTP://matthewmorey.com/creating-uiviews-programmatically-with-auto-layout/) эта ссылка может вам помочь –

ответ

1

Использование CGFloat screenScale = [[UIScreen mainScreen] scale];. Теперь screenScale можно использовать, чтобы определить, является ли это экраном сетчатки, то есть текущей шкалой устройства.

Чтобы получить текущие границы экрана: CGRect screenBounds = [[UIScreen mainScreen] bounds];

Чтобы получить текущее представление пикселя устройства, используйте CGSize screenSize = CGSizeMake(screenBounds.size.width * screenScale, screenBounds.size.height * screenScale); После этого, это вопрос использования относительного позиционирования, а не абсолютное позиционирование, которое вы используете Теперь. То есть, используйте все видимые в настоящее время элементы для определения фактического положения кнопки. Например, CGFloat yPos = (screenSize.height-20). Теперь yPos будет относиться к нижней части экрана, минус 20 пикселей на всех устройствах.

Мое предложение - использовать авто-макет, хотя. Там вы можете создавать ограничения, которые являются относительными (или абсолютными, если вы этого хотите, но это устраняет цель автоматического макета). В сети есть очень хорошие путеводители, просто короткие поисковые системы.

+0

Привет, Александр, спасибо за ответы. Но моя проблема в том, что у меня много кнопок на изображении с нерегулярным расположением. Мне было так сложно выровнять их, используя Autolayout. Не могли бы вы рассказать мне больше о коде? Я все еще не могу заставить это работать. благодаря – Clarence

1

Вы также можете установить autoresizing mask на ваш UIButton. Check this link. Вы должны установить автоматическое изменение маску для левого поля, высоты и ширины UIButton