Skip to main content

Objective-cで動的にAutolayoutを変更する

iOSアプリ開発デザインパターン入門 (技術書典シリーズ(NextPublishing))


特定条件でviewの高さを動的に変える必要が出て来た
これをObjective-cでの実現方法


・方針
デフォルトの制約があるのでそれを解除して
新しい制約を加えて高さを動的に変える

・Storyboardでの制約
Storyboardで制約を作る
その後、右クリックで制約をコードに紐付ける
そうすると以下が出来上がる

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *constraint;

・制約の解除

constraint.active = NO;

・制約の追加
view1をview2の上になるように制約をつける

NSLayoutConstraint* newConstraint = [NSLayoutConstraint constraintWithItem:view1
                                                                    attribute:NSLayoutAttributeBottom
                                                                    relatedBy:NSLayoutRelationEqual
                                                                        toItem:view2
                                                                    attribute:NSLayoutAttributeTop
                                                                    multiplier:1.0
                                                                        constant:0];
[self.view addConstraints:@[newConstraint]];

 

こうして制約を動的に変えることで、viewの高さを動的に変えることができましたとさ
まだまだiOSの戦いは続くよ

関連記事:

Pocket