Я новичок в Objective-C и разработке для iPhone, но пока все шло хорошо, пока я пытался копать глубже (ну, не слишком глубоко).Моя проблема в том, что я не могу инициализировать определенный подкласс UIView с определенными координатами для разных ориентаций.
Вращение работает отлично, но проблема в том, когда приложение инициализируется.Я думал о том, чтобы дать другой макет для другой ориентации.
Мое приложение на самом деле является приложением для iPad с основным UIViewController и тремя подпредставлениями (UIView).давайте вызовем view1, view2 и view3.
Три вида создаются на кончике проекта, а выходы кодируются и подключаются для них.
Кажется, проблема возникает из метода viewDidLoad ... В настоящее время он выглядит так:
-(void)viewDidLoad{
[super viewDidLoad];
[view1 removeFromSuperview];
[view2 removeFromSuperview];
[view3 removeFromSuperview];
UIInterfaceOrientation curOrientation = self.Orientation;
if(curOrientation == UIInterfaceOrientationPortrait)
{
view1 = [[XView alloc] initWithFrame:CGRectMake(20,492,728,492)];
view2 = [[YView alloc] initWithFrame:CGRectMake(384,20,364,472)];
view3 = [[ZView alloc] initWithFrame:CGRectMake(20,20,364,472)];
[self.view addSubview:view1];
[self.view addSubview:view2];
[self.view addSubview:view3];
}
else if(curOrientation == UIInterfaceOrientationLandscapeRight)
{
//Different coordinates
}
else if(curOrientation == UIInterfaceOrientationLandscapeLeft)
{
//Different Coodinates
}
}
Моя проблема в том, что представления не получают те же координаты, что и данныев методе viewDidLoad, и они кажутся инициализированными при x = 0, y = 0.Тем не менее, когда я поворачиваю устройство, все работает как шарм, и каждый UIView устанавливается в нужное место для каждой ориентации.По сути, я просто вызываю метод setFrame для каждого UIView.
Я не уверен, что здесь делаю не так .... Мне нужна помощь ...
С уважением