我觉得答案很明显,但我找不到问题的答案。很抱歉,如果我问过之前被问过的话。
在 init 中跟踪 uiview 的帧高时,它会指出高度 480px 。
当我在手势(或if (self)
之外)完成后跟踪相同高度时,它会指出高度 460px ,因此它“删除”框架中的状态栏。我真的不明白为什么会发生这种情况,它使动态垂直居中成为一种痛苦。我希望在初始化中帧为460px,所以我不必减去10px来使我的视图/图像居中。
我刚做了一个没有任何内容的简单项目,我把它设置成这样:
- (void)loadView
{
CGRect frame = [[UIScreen mainScreen] bounds];
self.centerview = [[CenterView alloc] initWithFrame:frame];
[self setView:self.centerview];
}
提前感谢您的帮助:)
答案 0 :(得分:0)
UIScreen的大小包括状态栏和任何其他元素,如导航栏和标签栏,因此iPhone 4S或更低版本将为480. UIView的大小将只是可用空间。
如果您不需要状态栏,则可以将其隐藏,以便您可以使用屏幕的完整大小。
更好的是仍然可以获得正在加载的视图的大小,以便您可以
CGRect frame = self.view.superview.bounds;
而不是使用UIScreen
答案 1 :(得分:0)
在applicationFrame
上使用bounds
代替mainScreen
。来自文档:
此属性包含屏幕边界减去占用的区域 状态栏,如果可见。使用此属性是 建议的方法来检索应用程序的初始窗口大小。 矩形以点数指定。
向centerview添加新视图的第二个问题可能是混合边界和框架。如果您希望将新视图添加到与中心视图相同的大小并位于相同位置,请执行以下操作:
UIView *newView = [[UIView alloc] initWithFrame:self.centerView.bounds];
[self.centerView addSubview:newView];