【发布时间】:2017-10-09 15:29:36
【问题描述】:
我还是 swift 的新手,我想做的是在父视图的底部放置一个容器视图(最初包含的部分将在视图之外)。然后,当用户触摸按钮时,容器会被动画化并向上移动,以便显示所有内容。
动画效果很好,但定位对我来说很难。这是我到目前为止所做的:
@IBOutlet var testView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
testView.frame.size = CGSize(width: view.bounds.width, height: 400)
testView.layer.position = CGPoint(x: view.frame.midX, y: view.frame.maxY + 90)
view.addSubview(testView)
}
所以我将容器视图设置为超级视图的宽度和 400 的固定大小。我尝试将它定位在屏幕底部的中心位置,以便它的一部分显示,一部分在屏幕之外。
这里是动画部分:
@IBAction func showMoreButton(_ sender: UIButton) {
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: [], animations: {self.testView.transform = CGAffineTransform(translationX: 0, y: -190)
}, completion: nil)
所以在这里我只是将容器向上移动 190。容器底部是一个关闭按钮,没有显示(仍然在超级视图之外)。
我很确定问题在于我如何将视图直接定位在 view.frame.maxY + 90(以便显示 90 像素)相对于它的高度。当我降低视图高度时,容器的原始位置会越来越向下移动,很明显,在动画之后一切都显示出来了,但它太小了。 由于 UIKit 中的原点位于 0,0 的左上角,我现在知道如何将视图定位在超级视图的底部,以便显示大约 90 像素,并且当动画完成时,所有视图都被移动up 并且现在显示在 superview 中。
我该怎么做?
【问题讨论】:
标签: ios view uiviewcontroller