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

Fry*_*Fry 42 objective-c uitableview ios autolayout

我有一个UITableViewAutolayout,当GADBannerView屏幕底部出现时我需要降低高度.

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

即使启用了自动布局,有没有办法改变帧?

Bha*_*rat 64

让你UITableView对底部布局的约束设置为0,制作一个IBOutlet.现在让你的GADBannerView身高是40,所以改变你的outlet.constant = 40;更多关于如何制作IBOutlet和改变它的价值看看这个这个希望这将有所帮助.

编辑:对于那些寻求例子的人,请遵循这些简单的步骤(因为这是接受的答案,我认为值得一个例子.感谢@manujmv这个例子)

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

  2. 然后在类中为此约束添加IBOutlet对象.例如:

    @property(弱,非原子)IBOutlet NSLayoutConstraint*heightConstraint;

在连接面板中连接此对象.

  1. 然后在需要时更改此约束的值

    self.heightConstraint.constant = 40;

  • 派对有点晚了,但在你的视图中添加`self.translatesAutoresizingMaskIntoConstraints = YES;`可能会删除修改约束常量的必要性. (9认同)
  • @JohnRogers评论实际上是正确答案! (3认同)

man*_*jmv 41

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

  1. 在界面中为视图创建高度constarint.
  2. 然后在类中为此约束添加IBOutlet对象.例如,

     @property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
    
    Run Code Online (Sandbox Code Playgroud)

    在连接面板中连接此对象.

  3. 然后在需要时更改此约束的值

     self.heightConstraint.constant = 40;
    
    Run Code Online (Sandbox Code Playgroud)


RJ1*_*168 7

还有一件事,[self.view layoutIfNeeded];一旦你改变了约束,就必须调用方法.

请享用 :)