2014-05-14 59 views
41

我使用Autolayout的UITableView,当屏幕底部出现GADBannerView时,我需要降低高度。使用自动布局以编程方式更改框架

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

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

+2

为您的约束创建出口,并在您的'GADBannerView'出现时更改其值。 – Bharat

+0

你能举个更好的例子吗? – Fry

+0

好吧,检查我的回答 – Bharat

回答

61

让你的UITableView约束底部布局设置为0,使IBOutlet。现在让你的GADBannerView高度是40所以改变你的outlet.constant = 40;欲了解更多关于如何使IBOutlet和改变它的价值看看thisthis希望这会有所帮助。

编辑:(因为这是公认的答案,我认为这是值得有一个例子感谢@manujmv在这个例子中)对于那些谁寻求例如,遵循这些简单的步骤

  1. 在界面中为视图创建高度约束。

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

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

将此对象连接到连接面板。

  • 然后改变这约束每当你需要

    self.heightConstraint.constant = 40的值;

  • +8

    晚会有点晚,但在您的视图中添加'self.translatesAutoresizingMaskIntoConstraints = YES;'可能已无需修改约束常量。 –

    +2

    @JohnRogers评论其实是正确的答案! – Benjamin

    41

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

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

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

      将此对象连接到连接面板。

    3. 然后,每当你需要

      self.heightConstraint.constant = 40; 
      
    7

    一两件事改变这种约束的值,你必须调用[self.view layoutIfNeeded];方法,一旦你changne的约束。

    享受:)

    相关问题