【问题标题】:Xcode 7 Swift 2 Object size different at run timeXcode 7 Swift 2 对象大小在运行时不同
【发布时间】:2016-08-08 10:08:30
【问题描述】:

谁能帮我解决我的问题。

我有一个视图控制器。我刚刚添加了一个“视图”对象并将“视图”对象的宽度设置为当前在运行时和设计尺寸显示为 320(iPhone 4s)的屏幕宽度。但是,当我在运行时检查“视图”对象的宽度时,它显示为 240。设计模式下“视图”对象的宽度属性显示为 320。我希望我的“视图”对象自动调整为屏幕宽度取决于所使用的 iPhone。例如,如果我在 iPhone 6 上进行模拟,屏幕宽度为 375,但“视图”仍显示为 240。高度也是如此。

高度也一样。在设计模式下,高度显示为 284,但在运行时显示为 128。

我在“视图”对象中有一个大小为 80 x 80 的按钮,但在运行时,它显示为 46 x 30。

这是我的“查看”设置:

View Object Height Constraints

View Object Vertical Constraints

我获取“视图”宽度的代码如下:

   @IBOutlet weak var gameSpace: UIView!
   var gsWidth: CGFloat = 0
   var gsHeight: CGFloat = 0

  let gsSize: CGRect = gameSpace.bounds
  gsWidth = gsSize.width 
  gsHeight = gsSize.height

对于按钮...

    @IBOutlet weak var tapBtn: UIButton!
    let buttonSize: CGRect = tapBtn.bounds
    tapBtnWidth = buttonSize.width
    tapBtnHeight = buttonSize.height

您的帮助/建议将不胜感激。提前谢谢你。

【问题讨论】:

  • View 的宽度相关限制是什么?
  • View的宽度是320?等宽约束:常数 0、优先级 1000、乘数 1

标签: ios swift autolayout runtime size


【解决方案1】:

实际上可能存在的情况是,您在 Auto-Layout 起作用之前分配了与维度相关的属性,然后继续使用错误的值。

如果您需要更新一些依赖于自动布局的值 - 最好在此处进行:

override func viewDidLayoutSubviews() {
       // Update your values there
}

当自动布局引擎完成所有工作时。还要记住,在视图生命周期中,这个函数可能会被多次调用。

【讨论】:

  • @Coolboylp 您必须将其添加到您的视图控制器中,并且每次在“视图做了布局子视图”之后都会自动调用它
  • 谢谢。我试试看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多