UIScrollView不像大多数滚动视图那样工作

时间:2016-05-01 20:17:51

标签: ios objective-c uiscrollview

我正在尝试让我的滚动视图到达文本的底部,而不必强行滚动“#”。因此,当我向下滚动时,右边的滚动条会在我到达剩余文本的底部之前停止。然后我必须用力再次滚动(这样右边的滚动条缩小,显示剩余的文本)。希望有人遇到过这个。我不想强制滚动。我希望它以干净的方式显示。

UIScrollView *theScroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 568.0f)];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(17.0f, 150.0f, 286.0f, 568.0f)];

label.text = @" a very large portion of text ";

label.backgroundColor = [UIColor clearColor];
label.font = [UIFont fontWithName:@"Chalkduster" size:16.0];
label.lineBreakMode = NSLineBreakByWordWrapping;
label.numberOfLines = 0;
[label sizeToFit];
[theScroll setShowsVerticalScrollIndicator:NO];
theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, label.frame.size.height);
[theScroll addSubview:label];
[self.view addSubview:theScroll];

这都是viewDidLoad方法。

1 个答案:

答案 0 :(得分:0)

有两件事似乎不对。

  1. 您将标签的origin.y设置为150。你的意思是让标签从滚动视图的内容区域的顶部开始到目前为止吗?
  2. 您将滚动视图的contentSize.height设置为与标签的高度相同。这与#1冲突。对于所有内容,contentSize.height应足够高。
  3. 假设#1正确,#2应设置为:

    theScroll.contentSize = CGSizeMake(theScroll.contentSize.width, CGRectGetMaxY(label.frame));
    

    请记住,标签的底部将是其原点+高度,而不仅仅是它的高度。