Ios 中央设备屏幕中的布局视图

Ios 中央设备屏幕中的布局视图,ios,objective-c,Ios,Objective C,我创建了一个自定义UIView并将其放置在viewcontroller中,我想将其放置在所有设备(Ipad、Iphone)的中心 所以我这么做 CGRect screenRect=[[UIScreen mainScreen]边界] self.center=CGPointMake((screenRect.size.height/2),(screenRect.size.width/2)) 但它只适用于Ipad/lanscape 如何在中央屏幕上布局此视图关闭所有设备,所有方向?这不是一个好的做法,当

我创建了一个自定义UIView并将其放置在viewcontroller中,我想将其放置在所有设备(Ipad、Iphone)的中心

所以我这么做

CGRect screenRect=[[UIScreen mainScreen]边界]

self.center=CGPointMake((screenRect.size.height/2),(screenRect.size.width/2))

但它只适用于Ipad/lanscape


如何在中央屏幕上布局此视图关闭所有设备,所有方向?这不是一个好的做法,当视图为自定位时,您应该从您的ViewController执行此操作,例如在ViewWillDisplay中,选中“是您的ViewController视图是全屏”并执行以下操作:

CGRect rect = [self.view bounds];

self.yoursView.center = CGPointMake((rect.size.width/2),(rect.height./2));

不确定我的答案是否是您要寻找的,但在我看来,您必须将视图控制器视图的中心设置为自定义视图的中心。这应该发生在每个方向

具体来说,我们假设您有一个名为testView的自定义视图

最初在创建时,您编写:

self.testView.center = self.view.center;
在iOS 8和以前版本中都可以使用的一种实用方法是观察UIDeviceOrientationIDChangeNotification通知,并在设备方向发生变化时得到通知。然后可以再次设置自定义视图的中心,如上所示

例如,在viewDidLoad方法中,让您的类观察上述通知:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOrientationChangeWithNotification:) name:UIDeviceOrientationDidChangeNotification object:nil];
接下来,私下或公开声明HandleOrientionChangeWithNotification:方法:

@interface ViewController ()

-(void)handleOrientationChangeWithNotification:(NSNotification *)notification;

@end
最后,按如下方式实施:

-(void)handleOrientationChangeWithNotification:(NSNotification *)notification{
    self.testView.center = self.view.center;
}
现在,每次更改方向时,自定义视图都将定位到屏幕的中心


希望这对您有所帮助。

“宽度”应该作为正确居中的第一个参数:
CGPointMake((rect.size.width/2),(rect.size.height/2))
是的,我没有注意到。或者您也可以使用
CGPointMake(CGRectGetMidX(rect),CGRectGetMidY(rect))