Принудительно изменить кадр подпредставлений - PullRequest
0 голосов
/ 18 мая 2019

Я устанавливаю рамку для всех элементов пользовательского интерфейса в ViewDidload и изменяю их кадры в

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

Проблема заключается в том, что я пытаюсь перейти от View A --> View B в портретной ориентации, а затем изменить ориентацию ландшафта, возвращаясь к представлениюA <- Вид B. Тогда кадры не изменяются соответственно.</p>

Я попытался добавить

[self.view setNeedsLayout];
[self.view layoutIfNeeded];

Но кадры по-прежнему не меняются, даже когда viewWillTransitionToSize не вызывается при возврате.

   - (void)viewDidLoad {
        [super viewDidLoad];


        scrollView = [UIScrollView new];
        scrollView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-hSelecViewHeight);
        scrollView.backgroundColor = [UIColor whiteColor];
        scrollView.bounces = true;
        scrollView.alwaysBounceVertical = true;
        [self.view addSubview:scrollView];




         imagePager = [[KIImagePager alloc]init];
            imagePager.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width*0.563);
            imagePager.delegate = self;
            imagePager.dataSource = self;
            imagePager.slideshowTimeInterval = 2.0;
            [imagePager setImageCounterDisabled:true];
            [scrollView addSubview:imagePager];

    -- and few other UI elements also --
    }

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        self.navigationController.navigationBar.barTintColor = barColor;

        [self.view setNeedsLayout];
        [self.view layoutIfNeeded];

            hSelView.frame = CGRectMake(0,self.view.frame.size.height-hSelecViewHeight,self.view.frame.size.width,hSelecViewHeight);
            scrollView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-hSelecViewHeight);
            imagePager.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width*0.563);
            [hSelView reloadData];
            if (categoryIndex!=0){
                tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, (259*[[arrListData valueForKey:@"sub_category_name"] count])+100);
                [scrollView setContentSize:CGSizeMake(self.view.frame.size.width, ([[arrListData valueForKey:@"sub_category_name"] count]*259)+100)];

            }else{
                tableView.frame = CGRectMake(0, imagePager.frame.origin.y+imagePager.frame.size.height+1, self.view.frame.size.width, (259*[[arrList valueForKey:@"name"]count])+100);
                [scrollView setContentSize:CGSizeMake(self.view.frame.size.width, ([[arrList valueForKey:@"name"]count]*259)+(self.view.frame.size.width*0.563-40)+100)];

            }

    }
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {
         UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
         NSLog(@"orientation:- %ld",(long)orientation);

         if (!isMaximized) {
             content.view.frame = CGRectMake(self.view.frame.size.width-(self.view.frame.size.width/1.5)-10, self.view.frame.size.height-hSelecViewHeight-10-((self.view.frame.size.width/1.5)*0.563), self.view.frame.size.width/1.5, (self.view.frame.size.width/1.5)*0.563);
             closePopButton.frame = CGRectMake(content.view.frame.size.width-40, 5, 36, 36);
             hSelView.frame = CGRectMake(0,self.view.frame.size.height-hSelecViewHeight,self.view.frame.size.width,hSelecViewHeight);
             scrollView.frame = CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height-hSelecViewHeight);
             imagePager.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.width*0.563);
             [hSelView reloadData];
             if (categoryIndex!=0){
                 tableView.frame = CGRectMake(0, 0, self.view.frame.size.width, (259*[[arrListData valueForKey:@"sub_category_name"] count])+100);
                 [scrollView setContentSize:CGSizeMake(self.view.frame.size.width, ([[arrListData valueForKey:@"sub_category_name"] count]*259)+100)];

             }else{
                 tableView.frame = CGRectMake(0, imagePager.frame.origin.y+imagePager.frame.size.height+1, self.view.frame.size.width, (259*[[arrList valueForKey:@"name"]count])+100);
                 [scrollView setContentSize:CGSizeMake(self.view.frame.size.width, ([[arrList valueForKey:@"name"]count]*259)+(self.view.frame.size.width*0.563-40)+100)];

             }


         }


     } completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {

     }];

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

вызов viewWillTransitionToSize метод в viewWillAppear

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self viewWillTransitionToSize:self.view.frame.size withTransitionCoordinator:[self transitionCoordinator]];
}
0 голосов
/ 18 мая 2019

Пожалуйста, добавьте обновленный код в метод viewWillAppear.

- (void)viewWillAppear:(BOOL)animated
  {   

  }
...