У меня есть CATextLayer, который я хочу, чтобы иметь возможность вертикального выравнивания в моем представлении. Я могу установить ограничение, чтобы выровнять его в верхней части представления, до середины или снизу; но я хочу, чтобы позволить пользователю изменять это на лету. Когда я создал свой CATextLayer, я использую это ограничение, чтобы выровнять его по центру:Как обновить ограничение на моем CALayer?
[textLayer addConstraint: [CAConstraint constraintWithAttribute:kCAConstraintMidY
relativeTo:@"superlayer"
attribute:kCAConstraintMidY]];
Это прекрасно работает, но если я хочу, чтобы обновить слой, чтобы выровнять его с верхней точки зрения я стараюсь:
[textLayer addConstraint: [CAConstraint constraintWithAttribute:kCAConstraintMaxY
relativeTo:@"superlayer"
attribute:kCAConstraintMaxY]];
Когда я добавляю новое ограничение, оно не выравнивается к вершине, но проходит мимо верхней части представления, где вы можете видеть только ее часть. Похоже, что он пытается применить оба ограничения. Не существует removeConstraint, и, похоже, это происходит, если я определяю переменную CAConstraint в моем классе и просто обновляю эту переменную после добавления ее в CATextLayer. Нужно ли мне каждый раз воссоздавать CATextLayer?