2013-08-09 4 views
0

Я создаю приложение с модальным представлением, содержащим UICollectionView, а под ним - представление, содержащее две кнопки (подтверждение/отмена).Добавление ограничений без автоматического макета

Количество строк в моем UICollectionView может меняться в зависимости от данных и не знать его заранее, поэтому я хочу добавить ограничение, чтобы всегда держать мои кнопки на 30 пикселей ниже коллекцииView.

Я не использую авто-макет для этого, так как у меня есть анимация, которая работает без него, поэтому я не знаю, как программно добавить такие ограничения.

Есть ли у кого-нибудь идеи, как это сделать?

Большое спасибо за вашу помощь

+1

Проверьте [здесь возможно] (http://ioscreator.com/auto-layout-in-ios-6 -Добавление-ограничения сквозного кода /)? – CaptJak

ответ

0

Я не уверен, о целях сбора. Тем не менее, ниже работает со стандартным видом и так UICollectionView является тип UIView, то код может работать с точки зрения сбора также

NSLayoutConstraint *bottomConstraint=[NSLayoutConstraint constraintWithItem:buttonA attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:0.45 constant:0]; 
    NSLayoutConstraint *widthConstraint=[NSLayoutConstraint constraintWithItem:buttonA attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:95]; 
    NSLayoutConstraint *heightConstraint=[NSLayoutConstraint constraintWithItem:buttonA attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:95]; 
    NSLayoutConstraint *leftConstraint=[NSLayoutConstraint constraintWithItem:buttonA attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1 constant:20]; 
    [self.view addConstraints:@[bottomConstraint,widthConstraint,heightConstraint,leftConstraint]]; 

выше в основном выкладывает buttonA относительно вида. Однако, чтобы использовать это, автоматический макет должен быть выключен (как в вашем случае).

Нижнее ограничение говорит о том, что это ограничение связано с кнопкой A и будет действовать по его атрибуту NSLayoutAttributeBottom (нижняя сторона), а нижняя сторона будет присутствовать точно в 0,45 * (снизу зрения).

Ограничение ширины указывает, что оно связано с кнопкой A и будет действовать по его ширине. Ширина не зависит от какого-либо другого объекта (toItem is nil), и он будет иметь постоянное значение 95.

+0

большое спасибо! действительно полезно! – Spearfisher

Смежные вопросы