Как изменить размер в полноэкранный режим при касании представления в приложении на основе TabBarController? - PullRequest
1 голос
/ 25 ноября 2011

Вот некоторые контроллеры представления, которые у меня есть: tabBarController , navigationBarController , viewController и imageView .
Иерархияявляется то, что: tabBarController является корневым контроллером, он включает в себя navigationBarController viewController (который включает imageView ) выдвигается navigationBarController .

Таким образом, вопрос, когда я коснулся imageView , как изменить его размер до полноэкранного с плавной анимацией.Обратите внимание, я не хочу скрывать NavigationBar и TabBar.
Я пробовал это с помощью setFrame, однако, оно покрывается navigationBarController и tabBarController .
Iпробовал presentModalViewController:, но он терял непрерывность.
Я также пытался сбросить rootViewController в viewController , но в результате получилась сломанная анимация.: (
Спасибо за любые предложения!


Тестовый код

UIViewController * viewController = [[UIViewController alloc] init];
[viewController.view setFrame:CGRectMake(0.0f, 0.0, 320.0f, 480.0f)];
[viewController.view setBackgroundColor:[UIColor redColor]];

UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 480.0f)];
[imageView setBackgroundColor:[UIColor yellowColor]];
[imageView setUserInteractionEnabled:YES];
[viewController.view addSubview:imageView];
[imageView release];

UINavigationController * navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[viewController release];

UIViewController * anotherTabViewController = [[UIViewController alloc] init];
[anotherTabViewController.view setFrame:CGRectMake(0.0f, 0.0, 320.0f, 480.0f)];
[anotherTabViewController.view setBackgroundColor:[UIColor blueColor]];

UITabBarController * tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:navigationController, anotherTabViewController, nil];
[navigationController release];
[anotherTabViewController release];

[self.window setRootViewController:tabBarController];

Здесь я пишу простой код для тестирования. Теперь не волнует действие касания. IИнтересно, как установить imageView в полноэкранный режим (ширина: 320, высота: 480). Но он ограничен панелью навигации и панелью вкладок. Я знаю, что рамка относится к супер-представлению. Как решить эту проблему?

1 Ответ

2 голосов
/ 25 ноября 2011

попробуйте добавить img к вашему окну, когда вам нужно изменить его размер на весь экран:

    UIImageView *img; //create new image
    img = yourImageView;
    [img setOrigin:CGPointMake(yourImageView.frame.origin.x, yourImageView.frame.origin.y+90)]; 
//window size is bigger, so to set an image frame visionary at same place, you need to set origin point lower
    MOEAppDelegate *sharedAppDelegate = (MOEAppDelegate *)[[UIApplication sharedApplication] delegate];
    [sharedAppDelegate.window addSubview:img];
    [UIView animateWithDuration:1 
                     animations:^{
                         [img setFrame:CGRectMake(0, 
                                                  0, 
                                                  320, 
                                                  480)];
                     }];

Обратите внимание, что размер фрейма вашего self.view автоматически изменяется при добавлении tabBar или navigationBar, а в - (void) viewDidLoad это НЕ изменяемый размер, jet!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...