I load InfoViewController’s view as a subview in MainViewController like this (declared in .h):
- (void)viewDidLoad
{
[super viewDidLoad];
infoViewController = [[InfoViewController alloc] initWithNibName:@"InfoViewController" bundle:nil];
mainInfoView = (MainInfoView *)[mainInfoViewController view];
}
(MainViewController is push-presented from a segue from a tableviewcontroller cell and has a navigation bar.)
This is in InfoViewController‘s viewDidLoad to set the size of view:
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.frame = CGRectMake(130, 0, 178, 299);
}
In the Size inspector for InfoViewController I’ve set the same size (with: 178, height: 299).
I disabled “Use Autolayout” both for InfoViewController in XIB and for the MainViewController in Storyboard.
I have some UILabels, UITextViews and UIImageViews in the InfoViewController. They are declared with properties in .h and synthesized in .m. and connected to the elements in the XIB. Their content is defined in viewWillAppear of MainViewController like this:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
infoViewController.kategoriLabel.text = [[objArr objectAtIndex:detailIndex] objectForKey:@"Type"];
}
When I run the app and this view is entered, some of the labels, images and textViews are suddenly placed in what appears to be random locations. This is only happening to some of the elements.
I have done this same thing in another app and it works fine on both simulator (iPhone 4 ver 6,0) and iPhone 5 device, but in this app it just gets messy on both.
I cannot seem to find anything different anywhere in the Utilities or anywhere else when I compare the apps.
If you have experienced something similar and solved it or if you might know what could be causing it, I will appreciate your answer. Thanks.
PS. I’m using Xcode 4.5.1
I had a different problem, but my brute-force resolution might work for you as well. In my case, I wanted to disable the nav bar on the final item in a series of view controllers. IB, though, won’t let you remove the Nav bar so I had to do it manually in viewWillAppear. However, once the bar was hidden, IOS shifted up all my buttons and objects that had been defined in IB by the height of the (now hidden) nav bar.
I resorted to the following in the Controller’s viewWillAppear. (objects tended to shift visibly when I tried this in viewWillAppear)
Annoying, but worked. If you can’t find the source of your objects moving, you could try forcing their positions using viewWillAppear.