在 super.viewDidLoad() 之前和之后不同的 UIImageView.frame.size :我做错了啥?
Posted
技术标签:
【中文标题】在 super.viewDidLoad() 之前和之后不同的 UIImageView.frame.size :我做错了啥?【英文标题】:Different UIImageView.frame.size before and after super.viewDidLoad() : what am I doing wrong?在 super.viewDidLoad() 之前和之后不同的 UIImageView.frame.size :我做错了什么? 【发布时间】: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 移动!
【问题讨论】:
请发布该代码。那么你很可能很快就会得到答案。 Why am I having to manually set my view's frame in viewDidLoad?的可能重复 【参考方案1】:以IBOutlet
的形式将您的故事板中的约束连接到您的代码。然后在 viewDidLayoutSubviews
:
widthConstraint.constant = 200
heightConstraint.constant = 200
【讨论】:
以上是关于在 super.viewDidLoad() 之前和之后不同的 UIImageView.frame.size :我做错了啥?的主要内容,如果未能解决你的问题,请参考以下文章
在两个嵌套子类中调用 super.viewDidLoad() 时,我遇到了 Swift 的无限循环