0

我觉得答案会很明显,但我就是找不到我的问题的答案。很抱歉,如果我问的是以前问过的东西。

init中跟踪uiview的框架高度时,它指出高度是480px当我在完成手势(或超出)后跟踪相同的高度时,它指出高度为460px,因此它从框架中“删除”状态栏。我真的不明白为什么会发生这种情况,它使动态垂直居中变得很痛苦。我希望框架在初始化时为 460 像素,因此我不必减去 10 像素来使我的视图/图像居中。if (self)

我只是做了一个简单的项目,里面什么都没有,我已经这样设置了:

控制器

- (void)loadView
{
    CGRect frame = [[UIScreen mainScreen] bounds];
    self.centerview = [[CenterView alloc] initWithFrame:frame];
    [self setView:self.centerview];
}

在此先感谢您的帮助 :)

4

2 回答 2

0

UIScreen 的大小包括状态栏和任何其他元素,如导航栏和标签栏等,在 iPhone 4S 或更低版本上将是 480。UIView 的大小将只是可用空间。

如果您不需要状态栏,则可以将其隐藏,这样您就可以使用完整的屏幕尺寸了。

最好还是获取您正在加载的视图的大小,这样您就可以做到

CGRect frame = self.view.superview.bounds;

而不是使用 UIScreen

于 2013-06-07T15:37:14.790 回答
0

use applicationFrame instead of bounds on the mainScreen. From the docs:

This property contains the screen bounds minus the area occupied by the status bar, if it is visible. Using this property is the recommended way to retrieve your application’s initial window size. The rectangle is specified in points.

The 2nd problem about adding a new view to centerview is probably because of mixing bounds and frame. If you want a new view to be added the same size as centerview and in the same position, do this:

UIView *newView = [[UIView alloc] initWithFrame:self.centerView.bounds];
[self.centerView addSubview:newView];
于 2013-06-07T15:52:17.283 回答