swift - 编辑 TextField 将 Animated UIView 移动到其原始位置 Swift
问题描述
在向上滑动时,我使用以下代码从屏幕底部动画了一个视图
UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations)
随着
self.view.layoutIfNeeded()
但是由于我的视图包含 TextField,所以当我开始键入并按任意键时,视图会返回到开始时的原始位置。所以简而言之,我猜动画视图的更新约束没有保留。
谁能帮我解决这个问题我尝试了很多选择。
@objc func handleSwipe(_ sender : UISwipeGestureRecognizer){
UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations: {
if sender.direction == .up{
switch self.currentIndex {
case 0:
self.assetsView.frame = CGRect(x: self.assetsView.frame.origin.x, y: self.scrollUpY , width: self.assetsView.frame.size.width, height: self.assetsView.frame.size.height)
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.scrollDownY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
break
case 1:
self.assetsView.frame = CGRect(x: self.assetsView.frame.origin.x, y: self.originalTopY , width: self.assetsView.frame.size.width, height: self.assetsView.frame.size.height)
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.scrollUpY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
self.savingsView.frame = CGRect(x: self.savingsView.frame.origin.x, y: self.scrollDownY , width: self.savingsView.frame.size.width, height: self.savingsView.frame.size.height)
break
case 2:
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.originalTopY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
self.savingsView.frame = CGRect(x: self.savingsView.frame.origin.x, y: self.scrollUpY , width: self.savingsView.frame.size.width, height: self.savingsView.frame.size.height)
break;
case 3:
break;
default:
QL1("Success")
}
}else if sender.direction == .down{
switch self.currentIndex {
case 0:
self.assetsView.frame = CGRect(x: self.assetsView.frame.origin.x, y: self.scrollDownY , width: self.assetsView.frame.size.width, height: self.assetsView.frame.size.height)
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.originalDownY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
break
case 1:
self.assetsView.frame = CGRect(x: self.assetsView.frame.origin.x, y: self.scrollUpY , width: self.assetsView.frame.size.width, height: self.assetsView.frame.size.height)
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.scrollDownY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
self.savingsView.frame = CGRect(x: self.savingsView.frame.origin.x, y: self.originalDownY , width: self.savingsView.frame.size.width, height: self.savingsView.frame.size.height)
break
case 2:
self.assetsView.frame = CGRect(x: self.assetsView.frame.origin.x, y: self.originalTopY , width: self.assetsView.frame.size.width, height: self.assetsView.frame.size.height)
self.liabilitiesView.frame = CGRect(x: self.liabilitiesView.frame.origin.x, y: self.scrollUpY , width: self.liabilitiesView.frame.size.width, height: self.liabilitiesView.frame.size.height)
self.savingsView.frame = CGRect(x: self.savingsView.frame.origin.x, y: self.scrollDownY , width: self.savingsView.frame.size.width, height: self.savingsView.frame.size.height)
break;
case 3:
break;
default:
QL1("Success")
}
}
self.view.layoutIfNeeded()
}, completion: { (finished: Bool) in
self.updateScreen(sender)
})
}
提前致谢。
解决方案
你可以试试 CGAffineTransform。用于翻译;
UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations: {
yourView.transform = CGAffineTransform(translationX: xOffset, y: yOffset)
}
并返回到原来的位置;
UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations: {
yourView.transform = CGAffineTransform.identity
}
推荐阅读
- wordpress - 一个域上的单个 wordpress 安装和多站点网络的 nginx 配置
- c# - “Identity.External”的 ASP.NET Core 标识异常
- xaml - 我似乎无法在 xaml 中对齐
- tcp - TCP 4 路关闭
- jersey - 开发 vsphere 插件时出错
- html - 引导网格系统 - 根据大小使列更改行
- delphi - 为什么 TFileStream.write 会产生不正确的数据?德菲 7
- kotlin - 将字符串转换为 ascii 的扩展函数
- windows - vssadmin 从 Cygwin shell 执行,类未注册
- c# - 绑定复杂对象中的某些参数字段