масштабировать UITableView в полноэкранный режим изнутри UIScrollView - PullRequest
0 голосов
/ 11 октября 2010

Не сумев соединить разные источники в какую-либо форму связного подхода или концепции, я снова обращаюсь к ученым людям StackOverflow.Моя проблема довольно специфична, и, возможно, именно поэтому у меня возникают проблемы с поиском подходящей информации, или, возможно, я просто отстой в поиске.В любом случае, здесь идет.

Я создаю приложение, которое имеет UIScrollView, заполненный UIViews, которые, в свою очередь, заполнены UITableViews.У меня пейджинг и все настроено и работает правильно.По сути, я пытаюсь отразить функциональность поведения вкладок (мобильных) в Safari или (даже ближе к тому, чего я пытаюсь достичь) на главной странице Tweetdeck.Я не смог опубликовать изображение, но если вы нажмете на ссылку ниже, вы поймете, что я имею в виду.

http://www.redmondpie.com/wp-content/uploads/2009/07/TweetdeckIphone04.jpg

Причина, по которой UITableViews находятся внутри UIViews, заключается в том, что это былоЕдинственный способ понять, как сделать так, чтобы у tableView было пространство между ними, а не рядом друг с другом.Я пытался установить размер tableViews и вставку scrollView, среди многих вещей, но табличные представления всегда заканчивали заполнением всего scrollView.В любом случае, это отдельная проблема, возможно

Когда я нажимаю на tableView / UIView внутри scrollView, я хочу, чтобы tableView / UIView увеличивался и заполнял весь экран (за исключением tabBar и navigationBar), итогда я смогу уменьшить его, нажав кнопку «Назад» на панели навигации.

Любая информация или толчки в правильном направлении приветствуются.

1 Ответ

1 голос
/ 29 октября 2010

Я делаю что-то похожее в моем приложении:

-(void)displayPage:(int)targetedPage {
    ...
    [UIView beginAnimations:@"MultiViewAnimate" context:nil];
    [UIView setAnimationDuration:0.3];

    //animate the frame
    //targetedPage is the index (table view) that should be displayed
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setFrame:CGRectMake(0, 0, 320, 372)];
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setUserInteractionEnabled:YES];
    ...

    [UIView commitAnimations];
}

-(void)displayMultiView:(id)sender {
    ...
    [UIView beginAnimations:@"MultiViewAnimate" context:nil];
    [UIView setAnimationDuration:0.3];

    //animate the frame
    //targetedPage is the index (table view) that I was previously looking at full screen
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setFrame:CGRectMake(60, 70, 200, 232)];
    [(UITableView *)[tableViews objectAtIndex:targetedPage] setUserInteractionEnabled:NO];
    ...

    [UIView commitAnimations];
}

В этом коде tableViews - это массив всех UITableView s, которые содержит scrollView.

Яделаю немного больше, потому что я делаю скриншот своего вида и использую UIImageView для масштабированного вида, а затем возвращаю анимацию к соответствующему UIWebView.Одним из преимуществ такого подхода является то, что я могу просто прикрепить UITapGestureRecognizer к UIImageView и не связываться с отключением userInteraction на UITableView.

...