iPhone:UIScrollview中的TableView,显示了带有滚动条的滚动条

时间:2010-04-26 08:10:41

标签: iphone uiscrollview

我在scrollview中添加了一些表格和其他视图。滚动表格工作正常。但是在父滚动视图中,当滚动时,会显示一个摇摆不定的垂直滚动条,有时它甚至会到达屏幕的中间。有时显示在屏幕的左侧。并不限于垂直滚动条区域。当我设置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 个答案:

答案 0 :(得分:2)

请记住,滚动条也是滚动的子视图。在对视图进行操作之前,将其从views数组中排除。

答案 1 :(得分:0)

邑。这解决了我的问题。似乎Scrollbars是一种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];

}