首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone: TableView inside UIScrollview,显示接种疫苗滚动条

iPhone: TableView inside UIScrollview,显示接种疫苗滚动条
EN

Stack Overflow用户
提问于 2010-04-26 16:10:41
回答 2查看 815关注 0票数 0

我已经在滚动视图中添加了一些表格和其他vies。在表格中滚动工作正常。但在父滚动视图中,当滚动时,会显示一个摇摆的垂直滚动条,有时甚至会出现在屏幕的中间。有时会在屏幕左侧显示。并且不限于垂直滚动条区域。当我设置showsVerticalScrollIndicator = NO时,它没有显示。但是你知道为什么滚动条要到处移动吗?

DashboardView是UIScrollView的一个子类。

代码语言:javascript
复制
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];

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-26 18:28:45

记住,scrollbars也是scroll的子视图。在对视图执行某些操作之前,将其从views数组中排除。

票数 2
EN

Stack Overflow用户

发布于 2010-05-04 19:36:13

是啊。这解决了我的问题。看起来Scrollbar是一种UIImageView。如果有人需要它,这是我的新代码,它工作得很好。

代码语言:javascript
复制
(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];

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2711918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档