【发布时间】:2014-05-13 20:51:01
【问题描述】:
考虑以下UIView“MainView”:
该视图包含一个容器视图,该视图又包含一个UITableView 控制器。容器视图的 y 坐标从渐变条的下方开始。 UITableView 在最底部包含带有“STU”标签和“图表”按钮的节页脚。
当UIView 加载时,以及直到与tableView 的任何交互,MainView's 维度是:
帧:0.000000x、0.000000y、568.000000w、268.000000h
我设置了一个委托协议,这样点击tableView 中的图表按钮将在MainView 中创建一个新视图,通过执行以下方法获得阴影效果:
CGRect newFrame = self.view.frame; // self = MainView
newFrame.size.width = 100;
newFrame.size.height = 50;
UIView *backgroundShadowView = [[UIView alloc] initWithFrame:newFrame];
backgroundShadowView.backgroundColor = [UIColor blackColor];
// Do Animation
上面的重要部分是'newFrame'CGRect。由于某种原因,在通过点击图表按钮与表格视图交互后,甚至滚动或点击一行后,self.view.frame 突然具有以下尺寸:
帧:0.000000x、52.000000y、568.000000w、268.000000h
因此阴影视图如下所示,y 原点比预期开始的位置要低得多,就在渐变条的上方。
我已经为这个问题调整了“shadowview”的宽度和高度;通常它是 568x268,但由于这个问题,屏幕底部会延伸 52 个单位。
52 个单位正好是状态栏 (20) + navigationbar_in_landscape (32) 的高度。
当然我可以手动调整框架尺寸,但我不想这样做。我想知道为什么视图的框架会发生意外变化。
对于我的一生,我无法弄清楚为什么视图会突然偏移。任何帮助表示赞赏!
【问题讨论】:
-
可能与自动布局有关...
标签: ios objective-c uiview