プログラムで制約を使用していくつかのコンポーネントを移動する簡単なプロジェクトを作成しました。この場合は単なる UIPickerView ですが、残念ながら、その意味が本当に理解できないエラーコードが常に表示されます。
ここに私のインターフェースがあります:
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UIPickerView *pickerView;
@end
ここに私の実装があります:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSLayoutConstraint *constraint = [NSLayoutConstraint
constraintWithItem:_pickerView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:216.f];
[self.view addConstraint:constraint];
}
そして、これが私のデバッガコンソールに表示されるものです:
2013-09-19 10:44:19.582 Constrain2[3092:c07] 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)
(
"<NSLayoutConstraint:0x71808f0 V:[UIPickerView:0x7180fd0(216)]>",
"<NSLayoutConstraint:0x71805d0 V:|-(216)-[UIPickerView:0x7180fd0] (Names: '|':UIView:0x7181290 )>",
"<NSAutoresizingMaskLayoutConstraint:0x7184d50 h=--& v=--& V:[UIView:0x7181290(416)]>",
"<NSLayoutConstraint:0x7181740 UIPickerView:0x7180fd0.bottom == UIView:0x7181290.bottom>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x71808f0 V:[UIPickerView:0x7180fd0(216)]>
なぜこのようなエラーメッセージが表示されるのですか? このチュートリアルhttp://ioscreator.com/auto-layout-in-ios-6-adding-constraints-through-code/も試しましたが、UIButton に問題はありませんでした。ただし、ストーリーボードを使用してボタンを作成していません。私の場合は、ストーリーボード経由で UIPickerView を配置しています。それが問題の原因ですか?
ありがとうございました。