使用自动布局以编程方式更改框架
我使用Autolayout的UITableView
,当屏幕底部出现GADBannerView
时,我需要降低高度。使用自动布局以编程方式更改框架
不幸的是Autolayout是不可能修改框架的。解决方案是删除Autolayout并手动设置框架。这是非常危险的,因为我所有的应用程序都可以在3.5'和4.0'显示器上正常工作,并且移除自动布局,从而导致新的测试阶段和更多的努力。
即使启用了自动布局,是否有更改框架的方法?
让你的UITableView
约束底部布局设置为0,使IBOutlet
。现在让你的GADBannerView
高度是40所以改变你的outlet.constant = 40;
欲了解更多关于如何使IBOutlet
和改变它的价值看看this或this希望这会有所帮助。
编辑:(因为这是公认的答案,我认为这是值得有一个例子感谢@manujmv在这个例子中)对于那些谁寻求例如,遵循这些简单的步骤
在界面中为视图创建高度约束。
-
然后在您的类中为此约束添加一个IBOutlet对象。 例如:
@property(weak,nonatomic)IBOutlet NSLayoutConstraint * heightConstraint;
将此对象连接到连接面板。
-
然后改变这约束每当你需要
self.heightConstraint.constant = 40的值;
晚会有点晚,但在您的视图中添加'self.translatesAutoresizingMaskIntoConstraints = YES;'可能已无需修改约束常量。 –
@JohnRogers评论其实是正确的答案! – Benjamin
不是试图改变视图的框架,而是使用自动布局添加高度约束并减少该约束的值。执行以下步骤:
- 在您的界面中为您的视图创建高度限制。
-
然后在您的类中为此约束添加一个IBOutlet对象。例如,
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *heightConstraint;
将此对象连接到连接面板。
-
然后,每当你需要
self.heightConstraint.constant = 40;
一两件事改变这种约束的值,你必须调用[self.view layoutIfNeeded];
方法,一旦你changne的约束。
享受:)
为您的约束创建出口,并在您的'GADBannerView'出现时更改其值。 – Bharat
你能举个更好的例子吗? – Fry
好吧,检查我的回答 – Bharat