【问题标题】:Change Constraints constant on view load has no effect视图负载上的更改约束常量没有影响
【发布时间】:2016-06-16 11:49:58
【问题描述】:

我有UIPageViewController,其中包含简单的UIViewControllers。 VC 的视图在顶部包含一个UIImageView(方面适合),在底部包含一个 UITextView。 ImageView 的 LayoutConstraints 是:

  • 固定宽度:有一个通向 VCs-Class 的出口
  • 固定高度:VC 级有一个出口
  • 中心 X 等于超级视图中心 X
  • Top 等于 Superviews MarinTop (+8)

ImageView 的 LayoutConstraints 是:

  • 顶部等于 ImageView 底部
  • 底部等于超级视图 MarginBottom (+8)
  • 宽度等于父视图宽度(乘数为 0.8)

这按预期工作。

但是当 VC 被加载并且有图像要显示时,我想改变 imageView 的大小。有最小和最大尺寸,如果图像视图更小或更大,则需要调整其大小。否则,imageview 必须获取图像的大小。

所以我计算实际图像的大小并为两个 LayoutConstraints 设置常量。这些值是正确的,但 ImageView 没有改变。

我尝试将它们设置为viewWillLayoutSubviews,但没有任何变化。

我做错了什么?

【问题讨论】:

  • 您是否在控制台中看到无法同时满足所有约束的警告?

标签: ios uiimageview autolayout uipageviewcontroller


【解决方案1】:

尝试在 viewDidLayoutSubviews 中更新您的视图:

- (void) viewDidLayoutSubviews {
 // setup your constraints here
}

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    在下面提供的块中编写您的更改约束代码

    dispatch_async(dispatch_get_main_queue(), {
    
    })
    

    【讨论】:

      【解决方案3】:

      尝试将 ImageView 和文本字段之间的垂直间距更改为灵活 (>=0)。如果这不能解决问题,请添加:

      [view setNeedsLayout];
      [view layoutIfNeeded];
      

      将 imageview 的大小调整为新图像的大小后。

      【讨论】:

        猜你喜欢
        • 2021-12-28
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-03
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        相关资源
        最近更新 更多