オブジェクトに制約を追加する方法を試すためだけに、簡単な実験を試みています。したがって、次のように、ストーリーボードから垂直方向のスペース制約 = 200 で単一の UIView (黄色) を作成します。
ここに私のインターフェースファイルがあります:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIView *screenView;
@property (strong, nonatomic) IBOutlet UIView *container;
@end
_container
そして、このコードを myに置くことで、 の Vertical Space Constraint をプログラムで変更したいと思いますviewDidLoad
:
NSLayoutConstraint *myConstraint =[NSLayoutConstraint
constraintWithItem:_screenView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:_container
attribute:NSLayoutAttributeWidth
multiplier:5
constant:15];
[_container addConstraint: myConstraint];
しかし、シミュレーターで実行すると、次のエラーメッセージが表示されました:
> 2013-09-19 05:48:26.488 container[6036:c07] *** Terminating app due to
> uncaught exception 'NSGenericException', reason: 'Unable to install
> constraint on view. Does the constraint reference something from
> outside the subtree of the view? That's illegal.
> constraint:<NSLayoutConstraint:0x7168860 UIView:0x7168b50.width ==
> 5*UIView:0x7169360.width + 15> view:<UIView: 0x7169360; frame = (0 0;
> 0 0); autoresize = TM+BM; layer = <CALayer: 0x7168bb0>>'
私は何を間違えましたか?ありがとうございました...
更新: _container の意味は次のとおりです。
ここに_screenViewがあります