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

das*_*ist 6 objective-c ios uistoryboard autolayout

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

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

我遇到了一个问题,即在使用自动布局的情况下largerView,每当我使用上面的方法时,我都smallerView不会实际使用largerView.center.我注意到它将largerView根据我使用的设备的特定布局(在这种情况下,是之前的iPhone 5的尺寸),取出它们在Storyboard中出现的中心坐标,但不会受到自动布局影响的更新中心的影响.

这里可以讨论类似的问题,除非它基于Swift.我知道如何以编程方式创建约束,但我不确定如何在应用自动布局后获取视图的"刷新"坐标.

谢谢!

sha*_*sha 8

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

- (void)viewDidLayoutSubviews 
{
    [super viewDidLayoutSubviews];
    self.smallView.frame.center = self.largeView.frame.center;
}
Run Code Online (Sandbox Code Playgroud)


Vit*_*nko 7

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

self.smallerView.center = CGPointMake(self.largerView.frame.size.width / 2, self.largerView.frame.size.height / 2);
Run Code Online (Sandbox Code Playgroud)

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

self.smallerView.center = self.largerView.center;
Run Code Online (Sandbox Code Playgroud)