将一个UIView的约束交换到另一个UIView

时间:2015-11-18 04:04:19

标签: ios objective-c uiview nslayoutconstraint

我的应用具有一定数量的UIViews。我现在需要横向交换他们的位置。例如,左端有一个名为 X UIView,右端有一个名为 Y 的{<1}}。点击按钮,我希望 Y 驻留在 X 所在的位置, X 来到UIView Y 初始位置。我想,我必须能够通过交换它们的NSLayoutConstraints来做到这一点(只是一个猜测)。但我无法让这个工作。这个想法有可能吗?这个objective-C代码是什么?

Original Image

Swapped Image

这些是我在尝试第一个代码后得到的结果(几乎在那里,但不完全)。我只将其应用于 KWI DXB 视图。我想要的是 KWI DXB 之间的盲目交换

1 个答案:

答案 0 :(得分:1)

如果视图大小相同,那么这不是什么大问题。假设你的两个视图X和Y被称为xView和yView。你可以这样做:

/d

如果你想要这个动画,你可以将它放在CGRect xViewFrame = xView.frame; UIViewAutoresizing xViewResizingConstraints = xView.autoresizingMask; xView.frame = yView.frame; xView.autoresizingMask = yView.autoresizingMask; yView.frame = xViewFrame; yView.autoresizingMask = xViewResizingConstraints; 块中,它应该可以工作。 (虽然我没有测试过)

您还可以将[UIView animateWithDuration: animations:^{}]更改为使用CGRect xViewFrame,并将中心换成相同大小的视图。

属性CGPoint xViewCenter告诉程序在屏幕调整大小的情况下该怎么做 - 无论是方向的改变,还是设备屏幕大小的结果或任何其他原因。

如果视图的大小不同,则必须处理视图的正确边距,并确保它们不会被截断到屏幕外。

希望这有帮助。

修改

您似乎正在使用UILabel作为您的视图或两个视图的子视图。如果是这种情况,请确保您还交换了UILabels的NSTextAlignment。像这样:

autoresizingMask