NSLayoutConstraintをコードで動的に書き換える際にパラメータを調べる方法

otaguro 782views 更新:2015年7月30日

コードでNSLayoutConstraintを設定するときは、

        let oldTrailingSpaceArray = self.contentView.constraints().filter({(includeElement: AnyObject) -> Bool in
            if let secondItem = includeElement.secondItem as? UIView{
                return secondItem == self.contentView
                    && includeElement.firstAttribute == NSLayoutAttribute.Trailing
                    && includeElement.relation == NSLayoutRelation.Equal;
            }
            return false;
        })
        if oldTrailingSpaceArray.count != 0 ,let oldTrailingSpace = oldTrailingSpaceArray[0] as? NSLayoutConstraint{
            self.contentView.removeConstraint(oldTrailingSpace)
        }

        let newTrailingSpace=NSLayoutConstraint(item: self.preferredView, attribute: .Trailing, relatedBy: .Equal, toItem: self.contentView, attribute: .TrailingMargin , multiplier: 1.0, constant: margin)
        self.contentView.addConstraint(newTrailingSpace)

のような記述をしますが、itemやtoItemの適切な設定値を調べるのは大変です。
一回StoryboardでConstraintを追加して、追加されたのがどのViewのConstraintかを確認したあと、

        var test2 = self.contentView.constraints()[1];//確認したViewのconstraintを取得
        var hoge = test2.firstItem;  //contentView
        var hoge2 = test2.firstAttribute; //Trailing
        var fuga = test2.relation; //Equal
        var foo = test2.secondItem;  //preferredView
        var foo2 = test3.secondAttribute; //TrailingMargin

のようなコードを書いて、設定値を確認するようにすると、リファレンスなどを読んで調べる手間が省けます。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません