在中心设备屏幕中布局UIView

时间:2014-12-03 08:11:19

标签: ios objective-c

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

所以我这样做

  

CGRect screenRect = [[UIScreen mainScreen] bounds];

     

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

但它只适用于Ipad / lanscape

如何在中心屏幕中将此视图设置为关闭所有设备,所有方向

2 个答案:

答案 0 :(得分:1)

这不是一个好习惯,当视图是自定位时,你应该从你的ViewController做到这一点,例如在viewWillAppear中,检查,是你的viewControllers视图是fullScreen并执行此操作:

CGRect rect = [self.view bounds];

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

答案 1 :(得分:0)

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

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

最初在创作时你会写:

self.testView.center = self.view.center;

适用于iOS 8和早期版本的实用方法是观察 UIDeviceOrientationDidChangeNotification 通知,并在设备方向发生变化时收到通知。然后,您可以再次设置自定义视图的中心,如上所示。

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

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleOrientationChangeWithNotification:) name:UIDeviceOrientationDidChangeNotification object:nil];

接下来,私下或公开声明handleOrientationChangeWithNotification:method:

@interface ViewController ()

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

@end

最后,按如下方式实施:

-(void)handleOrientationChangeWithNotification:(NSNotification *)notification{
    self.testView.center = self.view.center;
}

现在,每次更改方向时,自定义视图都将定位到屏幕的中心。

希望对你有所帮助。