I create a UIView with a label inside an AppDelegate and display it as follows:
[window addSubview:self.roundedCornerView]
The problem is that when I rotate the device, the view with the mark does not rotate at all. The text on the label is also in the wrong orientation. The window in my application received another view, which is a view of UIViewControllers, and it rotates perfectly.
Do I need to create another UIViewController in my AppDelegate and attach the created view to it, then subclass it and enable interface orientation to round the CornerView for rotation?
UPDATE Okay, I tried to do this by creating a new ViewController and subclassing it here, this is the code in my AppDelegate:
ActivityIndicatorWithLabelViewController *aiWithLabel = [[[ActivityIndicatorWithLabelViewController alloc] init] autorelease]; aiWithLabel.textOfTheLabel = text; [window addSubview:aiWithLabel.view];
The ActivityIndicatorWithLabelViewController class can be seen here:
// // ActivityIndicatorWithLabelViewController.m // LOFT // // Created by Marcin Zyga on 15.11.2011. // Copyright (c) 2011 __MyCompanyName__. All rights reserved. // #import "ActivityIndicatorWithLabelViewController.h" @implementation ActivityIndicatorWithLabelViewController @synthesize roundedCornerView; @synthesize textActivityIndicatorLabel; @synthesize textOfTheLabel; - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle /* // Implement loadView to create a view hierarchy programmatically, without using a nib. - (void)loadView { } */ // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; UIActivityIndicatorView *mainApplicationActivityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; mainApplicationActivityIndicatorView.frame = CGRectMake(80, 80, 40, 40); mainApplicationActivityIndicatorView.hidesWhenStopped = YES; //self.roundedCornerView = [[[UIView alloc] initWithFrame:CGRectMake(280, 400, 200, 200)] autorelease]; self.roundedCornerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)] autorelease]; roundedCornerView.backgroundColor = [UIColor blackColor]; roundedCornerView.alpha = 0.9f; roundedCornerView.layer.cornerRadius = 12.0; [roundedCornerView addSubview:mainApplicationActivityIndicatorView]; [mainApplicationActivityIndicatorView startAnimating]; // self.roundedCornerView.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth; //self.roundedCornerView.autoresizesSubviews = YES; self.textActivityIndicatorLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 150, 200, 50)]; self.textActivityIndicatorLabel.backgroundColor = [UIColor clearColor]; self.textActivityIndicatorLabel.textAlignment = UITextAlignmentCenter; self.textActivityIndicatorLabel.textColor = [UIColor whiteColor]; self.textActivityIndicatorLabel.font = [UIFont systemFontOfSize:22]; self.textActivityIndicatorLabel.text = @""; // self.textActivityIndicatorLabel.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleWidth; [self.roundedCornerView addSubview:textActivityIndicatorLabel]; self.textActivityIndicatorLabel.text = textOfTheLabel; self.view.frame = CGRectMake(280, 400, 200, 200); [self.view addSubview:self.roundedCornerView]; //self.view = self.roundedCornerView; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // eg self.myOutlet = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { [self.textActivityIndicatorLabel removeFromSuperview]; [self.textActivityIndicatorLabel release]; self.textActivityIndicatorLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; self.textActivityIndicatorLabel.backgroundColor = [UIColor clearColor]; self.textActivityIndicatorLabel.textAlignment = UITextAlignmentCenter; self.textActivityIndicatorLabel.textColor = [UIColor whiteColor]; self.textActivityIndicatorLabel.font = [UIFont systemFontOfSize:22]; self.textActivityIndicatorLabel.text = @"Landscape"; [self.roundedCornerView addSubview:textActivityIndicatorLabel]; NSLog(@"LANDSCAPE"); } NSLog(@"ENTERING SUPPORTED ORIENTATION!"); return YES; } @end
As you can see, there is a debugging code here. When I rotate the device from an outsider to the terrain, I get SUPPORT ORIENTATION! as well as LADNSCAPE NSLog. Deleting a shortcut works fine, but when I add a new one, it still displays (text) in the wrong orientation. What am I doing wrong?