【发布时间】:2020-10-06 18:47:39
【问题描述】:
UIStackView 中有 5 个按钮。其中之一是居中的。按住中心按钮后,我想将所有其他按钮设置为动画并隐藏它们。然后,当我释放中心按钮时,我想让它们从中心返回到原来的位置。
目前我的代码如下所示:
private func transform(views: [UIView], toIdentity isIdentity: Bool) {
UIView.animate(withDuration: 0.3) {
for view in views {
if isIdentity {
view.transform = .identity
} else {
view.center.x = self.view.center.x
}
view.isHidden = !isIdentity
}
}
}
这可行,但是当isIdentity 为false 时,按钮都会跳到父视图之外,然后移到中心。
我也尝试将这段代码放在动画块中。这避免了奇怪的跳跃问题,但它们比中心移动得更远。
let delta = self.view.center.x - view.center.x
view.transform = isIdentity ? .identity : view.transform.translatedBy(x: delta, y: 0)
为什么会这样,我该如何解决?
【问题讨论】:
-
这可能不是正确的方法...您在水平行中有 5 个按钮?当你点击并按住中间按钮时,你想让其他 4 个“滑动到中间”并隐藏在中间按钮后面?
-
是但不隐藏需要可见的中心按钮。其他 4 个需要隐藏。如果这不是正确的方法,那是什么?
-
在尝试将按钮嵌入堆栈视图时,您会遇到一些问题。您是在 Storyboard 中还是通过代码进行布局?按钮的宽度都一样吗?
标签: ios swift uistackview