iOS:コードを使ったNSLayoutConstraint設置を簡単にするUIViewカテゴリを公開します。

StoryboardやIB, xibファイル等を使わない、コードに直接コンストレイントを書く場合にコンストレイントの設置を楽にするUIViewカテゴリを公開します。Visual Format Languageを使うのが面倒だったので作りました。

ShingoFukuyama / UIView-Constraint

プロジェクトに入れて、#import "UIView+Constraint.h" で読み込んでください。pchファイルに書いておくと便利です。

(MITライセンス)

例1: 中央配置

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    [v1 addConstraintWidth:100.0 height:100.0];
    [v1 addConstraintCenteringXY];

例2: 下方配置 toolbar風

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    [v1 addConstraintHeight:44.0];
    [v1 addConstraintFromBottom:0];
    [v1 addConstraintFromLeft:0 toRight:0];

例3: 中央からのオフセット

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    [v1 addConstraintWidth:100 height:100];
    [v1 addConstraintCenteringXYWithOffset:UIOffsetMake(-50.0, -50.0)];

例4: 他のviewから

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    UIView *v2 = [[UIView alloc] initWithFrame:CGRectZero];
    v2.backgroundColor = [UIColor greenColor];
    [self.view addSubview:v2];

    [v2 addConstraintWidth:100 height:100];
    [v2 addConstraintFromTop:0];
    [v2 addConstraintFromRight:0];

    [v1 addConstraintWidth:100 height:100];
    [v1 addConstraintFromViewBottom:v2 distance:50.0];
    [v1 addConstraintFromViewLeft:v2 distance:50.0];

例5: superviewと同じに

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    [v1 addConstraintFill];

例6: superviewからのインセット

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    [v1 addConstraintFillWithInsets:UIEdgeInsetsMake(30.0, 10.0, 100.0, 5.0)];}

例7: コンストレイントを使ったアニメーション

    UIView *v1 = [[UIView alloc] initWithFrame:CGRectZero];
    v1.backgroundColor = [UIColor blueColor];
    [self.view addSubview:v1];

    NSArray *constraints = [v1 addConstraintFill];
    // Return an array of NSLayoutConstraint @[top, left, bottom, right]

    [self.view layoutIfNeeded];
    [UIView animateWithDuration:2.2 delay:0.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
        ((NSLayoutConstraint *)constraints[0]).constant = 500.0;
        [self.view layoutIfNeeded];
    } completion:^(BOOL finished) {

    }];

詳しくはUIView+Constraint.h/mを見てください。