簡體   English   中英

UIScrollView setContentOffset會在scrollview中添加子視圖嗎?

[英]UIScrollView setContentOffset will add a subview to the scrollview?

我碰巧發現setContentOffset到UIScrollView將導致scrollView將新視圖附加到其子視圖。 這是代碼:

- (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的子視圖數是5.這就是我所期望的。 之后,數字變為6.它是否按設計工作? 如何避免附加新的子視圖?

額外的子視圖是滾動指示器。 如果你在以后的方法中再次檢查,它將會消失。 別擔心。

您可以通過隱藏滾動指示符( showsVerticalScrollIndicatorshowsHorizontalScrollIndicator屬性)來確認這一點。

不要試圖假設有關UIKit類的視圖層次結構的事情。 UIKit可以並確實將自己的視圖添加到幾個方面 - 請參閱tableviews及其單元格,導航控制器的視圖等。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM