Я занимаюсь автоматической компоновкой и узнаю о анимационных ограничениях.iOS - ограничения неожиданно отображаются в viewdidload?
Мой первый вопрос. Если я динамически добавляю представления, кажется громоздким динамически добавлять свои ограничения к родительскому представлению. Есть ли какой-либо чистый способ выполнить гибкую компоновку, где виды могут быть добавлены и удалены программно? Или это означает, что я, вероятно, должен подумать о более простом решении для того, что я пытаюсь выполнить?
Второй вопрос. Я создал два представления и некоторые ограничения в коде. Я просто пытаюсь изменить размер ограничения на первый вид при загрузке, чтобы он стал короче, и второе представление соответственно сдвинется вверх.
здесь некоторый код:
first = [[UIView alloc]initWithFrame:CGRectZero];
[first setBackgroundColor:[UIColor blueColor]];
[first setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:first];
UIView *second = [[UIView alloc]initWithFrame:CGRectZero];
[second setBackgroundColor:[UIColor redColor]];
[second setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:second];
NSLayoutConstraint *leading = [NSLayoutConstraint constraintWithItem:first attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1 constant:20];
NSLayoutConstraint *trailing = [NSLayoutConstraint constraintWithItem:first attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1 constant:-20];
top = [NSLayoutConstraint constraintWithItem:first attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1 constant:40];
height = [NSLayoutConstraint constraintWithItem:first attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:80];
[self.view addConstraints:@[leading,trailing,top,height]];
[height setConstant:10];
[UIView animateWithDuration:0.5 animations:^{
[self.view layoutIfNeeded];
}];
хорошо так на дне здесь я запускаю мою анимацию .. мой второй вид уже позиционируется, где это было бы в конце анимации. первый вид расширяется из верхнего левого угла в правый нижний угол. он анимируется по диагонали и заканчивается высотой 10.
Может ли кто-нибудь объяснить это поведение. Я заметил, что если я назначу ограничения и сделаю их анимацией на IBAction (нажатие кнопки), то он будет оживлять, как ожидалось.
спасибо я думаю, что мне нужно играть с ним немного больше – hamobi
я думаю, мой вопрос .. если им добавление мнений между другими видами .. как если у меня есть вид B C , а затем я хочу добавить случайный вид X между ними таким образом B X C тогда я должен обновить ограничение просмотра B и C, наряду с созданием препятствий для X. это кажется очень громоздким – hamobi
спасибо за обновленная информация. ценить это – hamobi