【发布时间】:2016-09-02 21:51:27
【问题描述】:
我在 IB 中限制了 UIImageView。我试图为另一个约束中心设置动画,但是当我将layoutIfNeeded 与animateWithDuration 一起使用时,我可以看到iOS 也在调整我的UIImageView 的大小。
在 print() 的帮助下,我发现我的 UIImageView 实际上是 super.viewDidLoad() 之前的 1000.0, 1000.0 和之后的 200.0, 200.0,这是我的约束的大小。
我不明白。我从来没有在任何地方输入过 1000,我的图像资源是 200x200、400x400@2x 和 600x600@3x。
我做错了什么?
编辑:这是我的一些代码。我已经根据我的资产大小对其进行了一些调整,但这仍然不是我想要的:
@IBOutlet weak var bigLogoOutlet: UIImageView!
override func viewWillAppear(_ animated: Bool) {
bigLogoOutlet.frame.size.height = 0
bigLogoOutlet.frame.size.width = 0
}
override func viewDidLoad() {
super.viewDidLoad()
self.title = "My title"
}
override func viewDidLayoutSubviews() {
UIView.animate(withDuration: 0.5, delay: 0.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 0, options: [], animations: {
self.bigLogoOutlet.frame.size.height = 200
self.bigLogoOutlet.frame.size.width = 200
self.view.layoutIfNeeded()
}, completion: nil)
}
所以现在,它的大小从 0x0 调整为 200x200。好的,很酷,但它也从我的 IB 约束告诉他至少是 superview.center.x 的 x:0 y:0 移动!
【问题讨论】:
-
请发布该代码。那么你很可能很快就会得到答案。
标签: ios swift uiimageview nslayoutconstraint