Допустим, в раскадровке у вас есть кнопка skipButton, прикрепленная к нижней части экрана (вы не меняли нижнюю булавку, поэтому я ее не включил), ее высота составляет 44 точки, это 8 точек с левой стороны экрана , и это 8 точек с правой стороны экрана. Это нормально для iPhone, но на iPad вы хотите, чтобы кнопка имела высоту 50 точек, 100 с левой стороны экрана и 100 точек с правой стороны экрана.
Внутри контроллера представления необходимо создать выход для этих ограничений типа NSLayoutConstraint
, и для него есть свойство constant
, которое можно использовать для изменения константы, установленной в Storyboard (см. Пример кода ниже) .
В случае, если вы не знаете, как установить соединение с ограничением, все, что вам нужно сделать, это выбрать ограничение в раскадровке, открыть помощник редактора, затем cntrl + перетащить ограничение в контроллер представления и присвоить ему имя, которое вы хотите назвать , Это точно такой же процесс, как если бы вы подключали кнопку, метку или imageView, с той лишь разницей, что вы используете ограничение.
У каждого приложения есть свойство, где вы можете узнать, какой тип устройства используется в данный момент: UIDevice.current.userInterfaceIdiom
Apple - тип используемого устройства
Внутри viewDidLoad вы узнаете, какой тип устройства использует пользователь, а затем измените ограничения на любой размер, подходящий вам для iPad:
// skipButton is type UIButton (look at what's next to the name skipButton). You are not changing the button you are changing the constraint on the button.
@IBOutlet weak fileprivate var skipButton: UIButton! // the main focus here are the constraints for the saveButton. I just added this here to show that the saveButton is inside this vc. Your focus is changing the below constraints that help position and size the saveButton and not the saveButton itself
// ***VERY IMPORTANT*** YOU HAVE TO CONNECT THESE CONSTRAINTS via STORYBOARD (look at the 3 pics below). You do it the same way you would have connected the skipButton above. The difference is you grab the constraint that is on skipButton that you made in storyboard. The skipButton is already connected. These are the constraints that are on it and are completely different from the skipButton itself.
// the constraints are of type NSLayoutConstraint (look at the name next to skipButtonLeadingConstraint). This is what you want to change. This and the UIButton above are two completely different things
@IBOutlet weak var skipButtonLeadingConstraint: NSLayoutConstraint! // in Storyboard left constraint is set at 8 points from left side of vc
@IBOutlet weak var skipButtonTrailingConstraint: NSLayoutConstraint! // in Storyboard right constraint is set at 8 points from right side of vc
@IBOutlet weak var skipButtonHeightConstraint: NSLayoutConstraint! // in Storyboard height is set at 44 points
override func viewDidLoad() {
super.viewDidLoad()
// if the user is using an iPad then change the constraints to the below sizes which would make the saveButton's width smaller and also it's height taller. If the user is using anything other then an iPad then it will automatically use the Storyboard constraints and automatically ignore the below code
if UIDevice.current.userInterfaceIdiom == .pad{
// when using an iPad left constraint is now set at 100 points from left side of vc
skipButtonLeadingConstraint.constant = 100
// when using an iPad right constraint is now set at 100 points from right side of vc
skipButtonTrailingConstraint.constant = 100
// when using an iPad height constraint is now set at 50 points high
skipButtonHeightConstraint.constant = 50
}
}
Ниже описано, как добавить skipButtonLeadingConstraint в раскадровку. Вы можете взять его внутри Контура документа под Ограничениями кнопки Пропустить (выделено синим цветом)
1-й выберите ограничение в структуре документа:
2-й перетащите соединение с контроллером представления и назовите его skipButtonLeadingConstraint:
3-е завершение соединения: