iPhone: TableView внутри UIScrollview, показать прокручивающие полосы прокрутки вокруг - PullRequest
0 голосов
/ 26 апреля 2010

Я добавил несколько столов и других соперников в скроллвью. прокрутка в таблицах работает нормально. Но в родительском представлении прокрутки при прокрутке отображаются колеблющиеся вертикальные полосы прокрутки, иногда они даже доходят до середины экрана. когда-нибудь шоу в левой части экрана. и не ограничивается областью вертикальной полосы прокрутки. Когда я устанавливаю showsVerticalScrollIndicator = NO, он не отображается. Но знаете ли вы, почему полоса прокрутки движется вокруг.

DashboardView является подклассом UIScrollView.

dashboard=[[DashboardView alloc] initWithFrame:fullScreenRect];
dashboard.contentSize = CGSizeMake(320,700); // must do!
dashboard.showsVerticalScrollIndicator = YES;
dashboard.bounces = YES;
self.view = dashboard;


@implementation DashboardView

- (id)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        // Initialization code
    }
    return self;
}

- (void)drawRect:(CGRect)rect {
    // Drawing code
}

- (void) layoutSubviews{

    NSArray *views = self.subviews; 

    [UIView beginAnimations:@"CollapseExpand" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:YES];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

    UIView *view = [views objectAtIndex: 0];
    CGRect rect = view.frame;

    for (int i = 1;  i < [views count]; i++ ) {     
        view = [views objectAtIndex:i];
        view.frame = CGRectMake(rect.origin.x, rect.origin.y + rect.size.height, view.frame.size.width, view.frame.size.height);
        rect = view.frame;
    }

    [UIView commitAnimations];

}

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Помните, что полосы прокрутки тоже являются подпредставлениями прокрутки. Исключите его из массива views, прежде чем делать что-то с представлениями.

0 голосов
/ 04 мая 2010

Яп. это решило мою проблему. Кажется, полосы прокрутки являются своего рода UIImageView. Если кому-то это нужно, это мой новый код, который отлично работает.

(void) layoutSubviews{

NSArray *views = self.subviews; 

[UIView beginAnimations:@"CollapseExpand" context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];

//CGRect fullScreenRect=[[UIScreen mainScreen] applicationFrame];       
//  [self.view insertSubview:balanceView belowSubview:profileView];


UIView *view = [views objectAtIndex: 0];
CGRect rect = view.frame;

for (int i = 1;  i < [views count]; i++ ) {     
    view = [views objectAtIndex:i];
    if ([view isMemberOfClass: [UIView class] ]) {
        //CFShow(view);
        view.frame = CGRectMake(rect.origin.x, rect.origin.y + rect.size.height, view.frame.size.width, view.frame.size.height);
        rect = view.frame;          
    }

}

[UIView commitAnimations];

}

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