Iphone 始终居中视图

Iphone 始终居中视图,iphone,uiview,ipad,Iphone,Uiview,Ipad,我有一个小的UIView,它应该总是出现在屏幕的中央。这适用于纵向模式,但不适用于横向模式 要绘制UIView,我使用: myView.frame = CGRectMake((visibleArea.size.width - MY_VIEW_WIDTH) / 2, (visibleArea.size.height - MY_VIEW_HEIGHT) / 2, MY_VIEW_WIDTH, MY_VIEW_HEIGHT); myView.autoresizingMask = (

我有一个小的UIView,它应该总是出现在屏幕的中央。这适用于纵向模式,但不适用于横向模式

要绘制UIView,我使用:

myView.frame = CGRectMake((visibleArea.size.width - MY_VIEW_WIDTH) / 2, (visibleArea.size.height - MY_VIEW_HEIGHT) / 2, MY_VIEW_WIDTH, MY_VIEW_HEIGHT);
myView.autoresizingMask = (
                            UIViewAutoresizingFlexibleTopMargin |
                            UIViewAutoresizingFlexibleBottomMargin |
                            UIViewAutoresizingFlexibleLeftMargin |
                            UIViewAutoresizingFlexibleRightMargin
                           );

您知道可能缺少什么吗?

也许您没有更改状态栏的方向。如果不这样做,设备会认为方向仍然是纵向的,而不是横向的。

为什么不试试


myView.center=controller.view.center

应用程序是否自动旋转

我的意思是,您的
-[UIViewController应该是什么样子的AutoRotateTointerFaceOrientation:
方法?您的Info.plist文件中是否有初始和受支持的方向


同时检查家长的视图
autoresizesSubviews
属性。

我创建了一个属性,根据设备的方向为我提供边界。(这是UI屏幕上的一个类别。)


我没有触摸状态栏,当我旋转界面时,它实际上改变了位置。问题是,无论界面处于何种模式,在请求[[UIScreen mainScreen]边界时,您都会得到纵向模式的边界。当用户在横向环境中启动应用程序时,这显然没有用处。除此之外,自动调整大小似乎被某些东西弄糊涂了。嗯,请尝试使用[[UIScreen mainScreen]applicationFrame]获取帧。我不确定这个框架是否会随着方向而改变,但是,如果不这样做,请获取设备方向,如果是横向的,请切换宽度和高度。感谢您的回答,不过就我个人而言,我想知道为什么海报的代码不能按预期工作。。。
- (CGRect)boundsWithRespectToOrientation
{
    CGRect bounds = self.bounds;

    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.height > bounds.size.width)
        bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width);
    else if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.width > bounds.size.height)
        bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width);

    return bounds;
}