31

如果 Foursquare 签入成功,我的 iPhone 应用程序会在显示的视图顶部添加一个视图。

我希望视图以 X 和 Y 为中心,并使用自动布局使其具有确定的宽度和高度,但我不确定以编程方式添加哪些约束。我知道如何在 Storyboard 中执行此操作,但我不确定要输入什么代码来执行相同的操作,因为稍后会添加此视图以响应应用程序中的成功操作。

我无法让它正常工作,并且 UIView 有一个用 loadNibNamed: 加载的笔尖。

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];

为 Swift 更新:

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 回答