Я пытаюсь центрировать вид, который отображается в моем приложении для iPad, в зависимости от ориентации интерфейса.Это не работает, представление всегда смещается в зависимости от того, в какой ориентации запущено приложение.
Я искал Stackoverflow в течение 2 часов, пробовал разные методы, но не смог заставить его работать.
Вот как я отображаю представление из корневого представления:
publicationDownload = [[PublicationDownloadController alloc] init];
// Setting up propertys to load Publication-related information
[publicationDownload setDelegate:self];
[publicationDownload setThePubID:[NSNumber numberWithInt:[sender tag]]];
publicationDownload.view.opaque = NO;
publicationDownload.view.backgroundColor = [UIColor clearColor];
[publicationDownload.theUIView.layer setCornerRadius:5];
[publicationDownload.theUIView.layer setShadowColor:[UIColor blackColor].CGColor];
[publicationDownload.theUIView.layer setShadowOpacity:0.5];
[publicationDownload.theUIView.layer setShadowRadius:5];
[publicationDownload.theUIView.layer setShadowOffset:CGSizeMake(3.0f, 3.0f)];
publicationDownload.theUIView.clipsToBounds = NO;
publicationDownload.theUIView.backgroundColor = [UIColor clearColor];
[publicationDownload.theInnerUIView.layer setCornerRadius:5];
[publicationDownload.theInnerUIView.layer setShadowColor:[UIColor blackColor].CGColor];
[publicationDownload.theInnerUIView.layer setShadowOpacity:0.5];
[publicationDownload.theInnerUIView.layer setShadowRadius:5];
[publicationDownload.theInnerUIView.layer setShadowOffset:CGSizeMake(3.0f, 3.0f)];
[publicationDownload.theInnerUIView.layer setMasksToBounds:YES];
publicationDownload.theUIView.layer.masksToBounds = NO;
publicationDownload.view.clipsToBounds = YES;
publicationDownload.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:.5];
[self.view addSubview:publicationDownload.view];
в публикацииDownloadViewController, который я реализовал:
в viewDidLoad
: // Выполните любую дополнительную настройку послезагрузка вида из его кончика.
//self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
//self.view.contentMode = UIViewContentModeRedraw;
self.view.autoresizesSubviews = YES;
//self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
self.view.frame = self.view.bounds;
//theUIView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
NSLog(@"PublicationDownloadController: viewDidLoad:");
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) {
theUIView.frame = CGRectMake(212, 229, 600, 240);
self.view.frame = CGRectMake(0, 0, 1024, 768);
} else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight) {
theUIView.frame = CGRectMake(140, 380, 600, 240);
self.view.frame = CGRectMake(0, 0, 768, 1024);
}
и дополнительно:
-(void)didRotate:(NSNotification*)notification
{
NSLog(@"PublicationDownloadController: didRotate");
UIDeviceOrientation oreo = [[UIDevice currentDevice] orientation];
// oreo is our new orientation!
if (oreo == UIInterfaceOrientationPortrait || oreo == UIInterfaceOrientationPortraitUpsideDown) {
//theUIView.frame = CGRectMake(212, 229, 600, 240);
self.view.frame = self.view.bounds;
} else if (oreo == UIInterfaceOrientationLandscapeLeft || oreo == UIInterfaceOrientationLandscapeRight) {
//theUIView.frame = CGRectMake(140, 380, 600, 240);
self.view.frame = self.view.bounds;
}
}
Сам вид содержит вид в альбомной ориентации, фон которого имеет черный цвет и альфа 0,5 (в IB)- Дополнительно есть еще один вид (theUIView), который содержит некоторые UIControls.Это theUIView
должно быть в центре.Это работает, если приложение ste запускается в альбомной ориентации для альбомной ориентации, но не, если ориентация меняется на книжную.Также, если приложение запускается в портретной ориентации, представление не отображается по центру.
Любая помощь очень ценится!