将以编程方式创建的UIView中心与自动布局视图的中心对齐

时间:2014-12-16 07:03:05

标签: ios objective-c autolayout uistoryboard

我在故事板中创建了一个UIView,它完全位于具有自动布局的View Controller的中心,并且可以在不同的设备大小上正常工作。我称之为largerView

但是,我想以编程方式在此视图中创建一个较小的UIView smallerView中心,以便smallerView.center = largerView.center

我遇到了largerView使用自动布局的问题,每当我使用上述方法时,smallerView实际上都不会以{{1}为中心}}。我注意到它会根据我正在使用的设备的特定布局(在这种情况下,以前的iPhone 5的尺寸),在Storyboard中显示largerView.center的中心坐标,但不是受自动布局影响的更新中心。

类似的问题可能是discussed,除非它基于Swift。我知道如何以编程方式创建约束,但我不确定如何获得"刷新"应用自动布局后视图的坐标。

谢谢!

2 个答案:

答案 0 :(得分:8)

您需要在视图控制器中覆盖以下方法:

- (void)viewDidLayoutSubviews 
{
    [super viewDidLayoutSubviews];
    self.smallView.frame.center = self.largeView.frame.center;
}

答案 1 :(得分:7)

如果您的smallView是largeView的子视图:

self.smallerView.center = CGPointMake(self.largerView.frame.size.width / 2, self.largerView.frame.size.height / 2);

如果您的smallView与greaterView具有相同的superview:

self.smallerView.center = self.largerView.center;