ビューの一番下のすぐ上にボタンを追加しようとしています。自動レイアウトの制約をプログラムで追加しています。これが私のコードです。
- (void)viewDidLoad
{
[super viewDidLoad];
NSLog(@"height : %f", self.view.bounds.size.height);
[self.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=topSpace)-[button1]"
options:0
metrics:@{@"topSpace":@(self.view.bounds.size.height*0.9f)}
views:@{@"button1" : self.button1}]];
// Do any additional setup after loading the view, typically from a nib.
}
このコードの結果は画像に表示されており、ボタンは確かにスーパービューの下部にはありません。また、プログラムを実行すると、次の警告が表示されます。
2014-06-01 22:02:19.144 AutoLayout[2886:60b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSIBPrototypingLayoutConstraint:0x8d40590 'IB auto generated at build time for view with fixed frame' V:|-(269)-[UIButton:0x8d815c0] (Names: '|':UIView:0x8d82360 )>",
"<NSLayoutConstraint:0x8c34f60 V:|-(>=432)-[UIButton:0x8d815c0] (Names: '|':UIView:0x8d82360 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x8c34f60 V:|-(>=432)-[UIButton:0x8d815c0] (Names: '|':UIView:0x8d82360 )>
Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
これら2つの問題に関するヘルプ。