【问题标题】:Is there a way to programmatically center a view from one button to another?有没有办法以编程方式将视图从一个按钮居中到另一个按钮?
【发布时间】:2015-09-08 17:35:29
【问题描述】:

我想知道我是否可以通过编程方式将视图从一个元素居中到另一个元素。

下面的截图说明了。

如果我点击“Sort2”,我希望将来自 Sort2 的视图设置为在 Sort1 下居中

【问题讨论】:

    标签: ios objective-c swift cocoa-touch uiview


    【解决方案1】:

    在 Sort2 按钮的选择器中,添加行

    [UIView animateWithDuration:1.0 animations:^{
        sort2View.center = CGPointMake(sort1View.center.x, sort1View.center.y + 50)
    }];
    

    另一种更简洁的方法是添加UIConstraints。

    【讨论】:

    • 谢谢,我尝试使用 CGPointMake 制作动画,但很难猜出应该移动的正确数量。你有任何使用 UIConstraints 的非常简单的例子吗?
    • 好吧,你不应该去猜测。您需要计算两个视图之间的距离以及两个视图的大小。因为要放置 UIConstraints,您仍然需要进行一些计算。
    • 我根据设备将它们放大,所以 UIConstraints 会很好。但我会设置一些固定的尺寸。
    【解决方案2】:

    使用布局约束有更好的方法。您应该在 Sort2 和您的视图之间提供中心约束,并将其优先级设置为高。之后,在 Sort1 和您的视图之间设置中心约束,并将其优先级设置为低。之后,您只需使用此代码更改他们的优先级。 (在代码中,yourView 是你的整个视图,包括这三个视图)

    [UIView animateWithDuration:0.5 animations:^{
        [yourView layoutIfNeeded];
    }];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 2021-01-25
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多