Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

BrooklynDon

macrumors newbie
Original poster
First off, let me say that this is my first post on this forum. I am a newbie to iOS programming, but i'm learning.
Here is my problem: my main screen works in both landscape and portrait modes... here is the .m code:
Code:
#import "DownstateViewController.h"
#import "aboutDownstateViewController.h"
#import "AboutThisAppViewController.h"
#import "downstateServicesViewController.h"
#import "searchDownstateViewController.h"

//variables commented out to save space

aboutDownstateViewController *viewController;

//create the orientation views (Portrait and Landscape)
-(void)positionViews {
	UIInterfaceOrientation destOrientation = self.interfaceOrientation; //Get the presengt orientation from the device
	if (destOrientation == UIInterfaceOrientationPortrait || destOrientation == UIInterfaceOrientationPortraitUpsideDown) {
		//Show Portrait Mode
		downstate.frame = CGRectMake(0, 0, 321, 175);
		welcomeToDownstate.frame = CGRectMake(30, 190, 261, 45);
		aboutDownstate.frame = CGRectMake(20, 266, 117, 50);
		downstateServices.frame = CGRectMake(20, 324, 117, 50);
		searchDownstate.frame = CGRectMake(183, 266, 117, 50);
		aboutThisApp.frame = CGRectMake(183, 324, 117, 50);
		redAlert.frame = CGRectMake(0, 427, 320, 33);
		alertMessage.frame = CGRectMake(66, 5, 196, 21);
		copyright.frame = CGRectMake(26, 408, 268, 21);
	} else {
		//Show Landscape Mode
		downstate.frame = CGRectMake(149, 0, 186, 101);
		welcomeToDownstate.frame = CGRectMake(110, 102, 261, 45);
		aboutDownstate.frame = CGRectMake(101, 145, 117, 50);
		downstateServices.frame = CGRectMake(101, 203, 117, 50);
		searchDownstate.frame = CGRectMake(264, 145, 117, 50);
		aboutThisApp.frame = CGRectMake(264, 203, 117, 50);
		redAlert.frame = CGRectMake(0, 267, 480, 33);
		alertMessage.frame = CGRectMake(152, 5, 196, 21);
		copyright.frame = CGRectMake(107, 249, 268, 21);
	}
}

-(void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration {
	[self positionViews];//set and animate the new position view
}

//Set up the button clicked actions
//Showing just the 4th button for clarity

-(IBAction) button4Clicked: (id) sender{
	viewController = [[AboutThisAppViewController alloc] initWithNibName:@"AboutThisAppViewController" 
																	bundle:nil];
	[UIView beginAnimations:@"flipping view" context:nil];
	[UIView setAnimationDuration:1];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
	[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft
						   forView:self.view 
							 cache:YES];
	[self.view addSubview:viewController.view];
	[UIView commitAnimations];
}

When it goes to "About this App", I can see it well in landscape mode, but I get this in Portrait mode:
Screen shot 2011-01-05 at 10.28.26 AM.png


And this is the "About this App.m" code
Code:
#import "AboutThisAppViewController.h"

//Again, variables commented out to save space

-(IBAction) btn4Clicked:(id) sender{
	[UIView beginAnimations:@"flipping view" context:nil];
	[UIView setAnimationDuration:1];
	[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
	[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
						   forView:self.view.superview
							 cache:YES];
	[self.view removeFromSuperview];
	[UIView commitAnimations];
}

-(void)positionViews{
	UIInterfaceOrientation destOrientation = self.interfaceOrientation;
	if (destOrientation == UIInterfaceOrientationPortrait) {
		header.frame = CGRectMake(0, 0, 280, 21);
	} else {
		header.frame = CGRectMake(100, 100, 200, 21);
	}
}

-(void)willAnimateSecondHalfOfRotationFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation duration:(NSTimeInterval)duration{
	[self positionViews];
}

I would like to show this app in both the landscape and portrait modes. What am I doing wrong in the "aboutThisApp.m" program? TIA 🙂
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.