我的应用具有一定数量的UIViews
。我现在需要横向交换他们的位置。例如,左端有一个名为 X 的UIView
,右端有一个名为 Y 的{<1}}。点击按钮,我希望 Y 驻留在 X 所在的位置, X 来到UIView
Y 强大的>初始位置。我想,我必须能够通过交换它们的NSLayoutConstraints
来做到这一点(只是一个猜测)。但我无法让这个工作。这个想法有可能吗?这个objective-C
代码是什么?
这些是我在尝试第一个代码后得到的结果(几乎在那里,但不完全)。我只将其应用于 KWI 和 DXB 视图。我想要的是 KWI 和 DXB 之间的盲目交换
答案 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