Ответ 1
Да, вы можете расположить точку в виде доли ширины вида. Метод NSLayoutConstraint, constraintWithItem: attribute: relatedBy: toItem: attribute: multiplier: constant:, имеет этот параметр множителя, который позволяет использовать дробную связь между супервидом и его подвью. Правый край супервизора будет шириной этого вида (экран, если он имеет полный вид ширины), поэтому, если вы создадите ограничение, как показано ниже, точка будет располагаться на дробном расстоянии вдоль линии:
-(void)viewDidLoad {
[super viewDidLoad];
[self.view removeConstraint:self.leftConDark];
[self.view removeConstraint:self.leftConLight];
NSLayoutConstraint *lcd = [NSLayoutConstraint constraintWithItem:self.darkButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.5
constant:0];
NSLayoutConstraint *lcl = [NSLayoutConstraint constraintWithItem:self.lightButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:.9
constant:0];
[self.view addConstraints:@[lcd,lcl]];
}
В этом примере я устанавливаю два UIButtons (тип информации темный и светлый). Я добавил их в IB и сделал IBOutlets своим ограничениям, которые они имеют в левой части представления (что система дала мне, это могло быть с правой стороны - это не имеет значения, так как вы просто удаляете их в любом случае Если вы делаете точки в коде, вам не нужно это делать). В коде я удаляю эти ограничения, а затем добавляю новые, которые помещают центр кнопок на 50% и 90% пути по экрану.