31

Foursquare チェックインが成功した場合、私の iPhone アプリは、表示されているビューの上にビューを追加します。

ビューを X と Y の中央に配置し、自動レイアウトを使用して幅と高さを定義したいのですが、プログラムでどの制約を追加すればよいかわかりません。ストーリーボードでそれを行う方法は知っていますが、アプリでの成功したアクションに応答して後でこのビューが追加されるため、同じことを行うためにコードに正確に何を入力すればよいかわかりません。

私はそれを正しく動作させることができず、UIView には loadNibNamed: でロードする nib があります。

SuccessView *successfulCheckInView = [[SuccessView alloc] initWithFrame:CGRectZero];
successfulCheckInView.placeNameLabel.text = properVenue.name;
successfulCheckInView.placeAddressLabel.text = properVenue.address;
successfulCheckInView.delegate = self;

[self.ownerVC.view addSubview:successfulCheckInView];
4

1 に答える 1

75

これを試して:

NSLayoutConstraint *xCenterConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeCenterX multiplier:1.0 constant:0];
[superview addConstraint:xCenterConstraint];

NSLayoutConstraint *yCenterConstraint = [NSLayoutConstraint constraintWithItem:view1 attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:view2 attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
[superview addConstraint:yCenterConstraint];

スウィフト用に更新:

NSLayoutConstraint(item: view1, attribute: .centerX, relatedBy: .equal, toItem: view2, attribute: .centerX, multiplier: 1, constant: 0).isActive = true

NSLayoutConstraint(item: view1, attribute: .centerY, relatedBy: .equal, toItem: view2, attribute: .centerY, multiplier: 1, constant: 0).isActive = true
于 2013-08-28T19:31:13.580 に答える