0

UICollectionView を含むモーダル ビューと、その下に 2 つのボタン (検証/キャンセル) を含むビューを使用してアプリを構築しています。

UICollectionView の行数はデータに応じて変化する可能性があり、事前にわからないため、ボタンを常に collectionView の 30px 下に保つように制約を追加したいと考えています。

自動レイアウトを使用しないとうまく機能するアニメーションがいくつかあるため、自動レイアウトを使用していないため、プログラムでそのような制約を追加する方法がわかりません。

誰もそれを行う方法を知っていますか?

助けてくれて本当にありがとうございます

4

1 に答える 1

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 は nil)、95 の定数値を持ちます。

于 2013-08-09T14:11:08.757 に答える