gpt4 book ai didi

ios - UIScrollView setContentOffset 会给scrollview 添加 subview ?

转载 作者:行者123 更新时间:2023-11-28 22:13:37 27 4
gpt4 key购买 nike

我碰巧发现 setContentOffset 到 UIScrollView 会导致 scrollView 将新 View 附加到其 subview 。这是代码:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake((320 - 261) / 2, 50, 261, 67)];
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.bounces = NO;
scrollView.backgroundColor = [UIColor darkGrayColor];
for (int i = 0; i < 5; i ++) {
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(i * 87, 1, 87, 65)];
view.tag = i;
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 50, 30)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
label.text = [NSString stringWithFormat:@"%d", i];
[view addSubview:label];
view.backgroundColor = [UIColor greenColor];
[scrollView addSubview:view];
}
scrollView.contentSize = CGSizeMake(87 * 5, 67);
NSLog(@"before scroll: count of subview is %d", scrollView.subviews.count);
CGPoint offset = CGPointMake(87, 0);
[scrollView setContentOffset:offset animated:YES];
NSLog(@"after scroll: count of subview is %d", scrollView.subviews.count);
[self.view addSubview:scrollView];
}

在调用setContentOffset:offset之前,scrollView的 subview 数量为5,这是我所期望的。之后,数字变为 6。它是否按设计工作?如何避免添加新的 subview ?

最佳答案

额外的 subview 是滚动指示器。如果您在以后的方法中再次检查,它将消失。不用担心。

您可以通过隐藏滚动指示器(showsVerticalScrollIndicatorshowsHorizo​​ntalScrollIndicator 属性)来确认这一点。

不要试图假设有关 UIKit 类的 View 层次结构的事情。 UIKit 可以并且确实将自己的 View 添加到几个东西中——查看 TableView 及其单元格、导航 Controller 的 View 等等。

关于ios - UIScrollView setContentOffset 会给scrollview 添加 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22318897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com