Подтвердить что ты не робот

Автоотключение - позиция по процентам

Я хотел бы сопоставить точки вдоль линии.

line across screen

Длина линии зависит от устройства и ориентации и всегда растягивается по всему экрану. Поэтому для меня было бы наиболее удобно использовать позицию для точек с использованием значения относительного процента.

До сих пор я определял ограничения, определенные в каком-либо значении точки (Doc)

Можно ли использовать процентные значения в качестве ограничений? Любые идеи о том, как позиционировать эти точки масштабируемым образом... или мне нужно сделать это преобразование/позиционирование "вручную"?

4b9b3361

Ответ 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% пути по экрану.

Ответ 2

Я не специалист по автоматической компоновке (или даже компетентный пока!), но с XCode 6 вы, похоже, можете сделать это в IB.

  • Выберите объект.
  • Показать инспектора размера (щелкните по линейке) size inspector

  • Дважды щелкните по прямоугольнику ограничения (не очевидно! "Редактировать" переносит вас куда-то еще)

constraint rectangle

  1. Здесь вы можете установить множитель точно так же, как в ответе выше.

enter image description here