我在故事板中创建了一个UIView
,它完全位于具有自动布局的View Controller的中心,并且可以在不同的设备大小上正常工作。我称之为largerView
。
但是,我想以编程方式在此视图中创建一个较小的UIView
smallerView
和中心,以便smallerView.center = largerView.center
。
我遇到了largerView
使用自动布局的问题,每当我使用上述方法时,smallerView
实际上都不会以{{1}为中心}}。我注意到它会根据我正在使用的设备的特定布局(在这种情况下,以前的iPhone 5的尺寸),在Storyboard中显示largerView.center
的中心坐标,但不是受自动布局影响的更新中心。
类似的问题可能是discussed,除非它基于Swift。我知道如何以编程方式创建约束,但我不确定如何获得"刷新"应用自动布局后视图的坐标。
谢谢!
答案 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;