【问题标题】: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。我试图为另一个约束中心设置动画,但是当我将layoutIfNeededanimateWithDuration 一起使用时,我可以看到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


【解决方案1】:

IBOutlet 的形式将您的故事板中的约束连接到您的代码。然后在 viewDidLayoutSubviews:

widthConstraint.constant = 200
heightConstraint.constant = 200

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2011-10-12
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多