【问题标题】:Align a programmatically created UIView's center with an auto-layout view's center以编程方式创建的 UIView 的中心与自动布局视图的中心对齐
【发布时间】:2015-02-14 10:41:57
【问题描述】:

我在 Storyboard 中创建了一个 UIView,它将在具有自动布局的视图控制器的中心完全居中,并且在不同的设备尺寸上都可以正常工作。我称之为largerView

但是,我想以编程方式创建一个较小的UIView,称为smallerView,并居中这个视图,以便smallerView.center = largerView.center

我遇到了一个问题,鉴于largerView 上使用了自动布局,每当我使用上述方法时,我的smallerView 从未真正以largerView.center 为中心。我注意到它将采用 largerView 的中心坐标,因为它们出现在 Storyboard 中,基于我正在使用的设备的特定布局(在这种情况下,是以前的 iPhone 5 的尺寸),但不受更新的中心影响自动布局。

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

谢谢!

【问题讨论】:

    标签: ios objective-c autolayout uistoryboard


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果你的小视图是大视图的子视图:

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

      如果您的小视图与大视图具有相同的超级视图:

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

      【讨论】:

        猜你喜欢
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-27
        • 2017-01-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多