ビジュアル フォーマット言語を使用して、Autolayout のビューに上下のパディングを設定しようとしています。パディングをビジュアルフォーマット文字列の整数として記述した場合、コードはコンパイルされて機能しますが、定数に置き換えようとすると失敗します。これが私が得ているエラーです:
キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: '制約形式を解析できません: ビューの幅または高さに等しいスペースを設定することはできません。おそらく、ビューをスペーサーとして使用したいですか? [view1][spacer(==view1)][view2] V:|-kTopAndBottomPadding-[messageTextView]-kTopAndBottomPadding-|
そして、これが私のコードです。
CGFloat const SPMTVC_kTopAndBottomPadding = 5.0;
// ...
// Create my own NSDictionary of variable bindings.
NSDictionary *variableBindings = @{@"messageTextView" : _messageTextView,
@"contentView" : self.contentView,
@"kTopAndBottomPadding" : [NSNumber numberWithFloat:SPMTVC_kTopAndBottomPadding]};
// Constraints in the horizontal axis.
// Basically just pins the view to the left and right of superview.
NSMutableArray *constraints = [[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|-0-[messageTextView(==contentView)]-0-|"
options:NSLayoutFormatAlignAllLeading
metrics:nil
views:variableBindings] mutableCopy];
// Constraints in vertical axis, give 5-point padding from superview's top & bottom.
[constraints addObjectsFromArray:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|-kTopAndBottomPadding-[messageTextView]-kTopAndBottomPadding-|"
options:NSLayoutFormatAlignAllTop
metrics:nil
views:variableBindings]];
for (NSLayoutConstraint *constraint in constraints) {
[self.contentView addConstraint:constraint];
}
エラーメッセージは、辞書で定義されているように、コンパイラがkTopAndBottomPadding
であると考えていることを意味していると思います。これを正しく行う方法はありますか?UIView
NSNumber