使用自动布局以编程方式更改框架

我有一个UITableView与Autolayout和我需要降低GADBannerView出现在屏幕的底部的高度。

不幸的是Autolayout是不可能修改框架的。 解决办法是删除Autolayout并手动设置框架。 这是非常危险的,因为我所有的应用程序都能在3.5'和4.0'显示器上正常工作,并且移除自动布局,从而导致新的testing阶段和更多的努力

即使自动布局被启用,是否有改变框架的方法?

让您的UITableView约束底部布局设置为0,使一个IBOutlet 。 现在让你的GADBannerView高度是40,所以改变你的outlet.constant = 40; 有关如何制作IBOutlet并更改其价值的更多信息,请IBOutlet 此或此希望,这将有所帮助。

编辑:对于那些寻求示例,请按照这些简单的步骤(因为这是被接受的答案,我认为这是值得有一个例子。在这个例子信贷@manujmv)

  1. 在界面中为您的视图创build一个高度约束。

  2. 然后在你的类中为这个约束添加一个IBOutlet对象。 例如:

    @属性(弱,非primefaces)IBOutlet NSLayoutConstraint * heightConstraint;

在连接面板中连接这个对象。

  1. 然后在需要的时候改变这个约束的值

    self.heightConstraint.constant = 40;

而不是试图改变视图的框架,使用自动布局添加高度约束,并减less这个约束的价值。 执行以下步骤:

  1. 在界面中为您的视图创build一个高度限制。
  2. 然后在你的类中为这个约束添加一个IBOutlet对象。 例如,

      @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint; 

    在连接面板中连接这个对象。

  3. 然后在需要的时候改变这个约束的值

      self.heightConstraint.constant = 40; 

还有一件事,你必须调用[self.view layoutIfNeeded]; 方法一旦你约束的约束。

请享用 :)