Swift: определить объект, к которому применяется NSLayoutConstraint - PullRequest
0 голосов
/ 04 декабря 2018

Если у меня есть NSLayoutConstraint, который я извлек из self.view.constraints, возможно ли получить объект, к которому применяется ограничение? Редактировать: Чтобы уточнить, что я пытаюсь сделать: переместите UILabel из выключенного экрана во включенное, а затем измените содержимое этого ярлыка

Итак, у меня есть это ограничение:

<NSLayoutConstraint:0x600000e337f0 'lblTeamFieldTop' V:[UILabel:0x7f9d5a826120' Add A Team']-(75)-[UILabel:0x7f9d5a8256f0'Team Name']   (active)>

Я знаю, что это метка, к которой он применяется: [UILabel: 0x7f9d5a8256f0

есть ли способ получить ссылку на этот объект из ограничения?

Чтобы развернуть наэто немного больше.Когда вы создаете ограничение программным способом, вы можете установить следующие свойства:

+ (instancetype)constraintWithItem:(id)view1 
                         attribute:(NSLayoutAttribute)attr1 
                         relatedBy:(NSLayoutRelation)relation 
                            toItem:(id)view2 
                         attribute:(NSLayoutAttribute)attr2 
                        multiplier:(CGFloat)multiplier 
                          constant:(CGFloat)c;

, но WithItem и toItem не кажутся читаемыми свойствами ограничения.

Я нашел это, firstitem и seconditem.

Редактировать: разъяснить мое решение.fistitem и seconditem являются свойствами NSLayoutConstraint.firstitem может быть, например, Superview, а seconditem может быть элементом, который вы привязываете к firstitem, например, UILabel.Так что в моем случае UILabel, который я искал, был вторым элементом (вы можете увидеть их в раскадровке, просто нажмите на NSLayoutConstraint и просмотрите его информационную панель).Я должен был привести его обратно к UILabel, так как я думаю, что NSLayoutConstraint приведёт их к Any.

...