为啥这个视图会神奇地改变大小?

Posted

技术标签:

【中文标题】为啥这个视图会神奇地改变大小?【英文标题】:Why does this view magically change size?为什么这个视图会神奇地改变大小? 【发布时间】:2013-03-30 16:38:50 【问题描述】:

我有一个带有 tableFooterView 的 tableView。

在 viewDidload 上:

 <UIView: 0x6c87a70; frame = (0 325; 320 3); autoresize = TM+BM; layer = <CALayer: 0x6c87aa0>>
  <UIImageView: 0x6c87b60; frame = (31 0; 257 3); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x6c87ba0>> - table_pull_refresh_footer.png

在 viewWillLayoutSubviews 上我看到的是

<UIView: 0x6c87a70; frame = (0 325; 320 3); autoresize = TM+BM; layer = <CALayer: 0x6c87aa0>>
 <UIImageView: 0x6c87b60; frame = (31 0; 320 3); autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x6c87ba0>> - table_pull_refresh_footer.png

那么为什么 UIImageView 突然变大了呢? parentView 根本不会改变大小。还是320 3。

【问题讨论】:

视图的边界是否改变? 在记录视图之前您的viewWillLayoutSubviews 是否会致电[super viewWillLayoutSubviews] 如果你继承一个普通的 UIViewController 你不需要调用它。但对于其他视图控制器,它可能是必要的。 除非你在做一些时髦的事情,否则我无法用给出的信息重现问题。多一点代码会有帮助 【参考方案1】:

问题正如 vikingosgundo 所说的那样。

我应该先调用 [super viewWillLayoutSubviews]

【讨论】:

以上是关于为啥这个视图会神奇地改变大小?的主要内容,如果未能解决你的问题,请参考以下文章

setStatusBarHidden 神奇地修复了无法正常工作的 pushViewController,为啥?

设置视图的边界会改变框架的坐标,为啥?

为啥是模型视图矩阵?

ios 为啥model传值之后视图会消失

SDI框架中如何根据主机改变视图大小?

当另一个视图控制器显示在它上面时,UIPresentationController 会改变大小