如何使用Autolayout以编程方式将UIView置于现有UIView之上?

时间:2013-08-28 19:13:01

标签: iphone ios uiview autolayout

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

我希望视图以X和Y为中心,并且使用autolayout使其具有明确的宽度和高度,但我不确定以编程方式添加哪些约束。我知道如何在Storyboard中执行此操作,但我不确定在代码中输入的确切内容与此视图的相同之处是稍后添加以响应应用程序中的成功操作。

我无法正常工作,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];

1 个答案:

答案 0 :(得分: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