将scrollView添加到另一个scrollView无法正常工作

时间:2013-02-26 18:13:48

标签: objective-c uiscrollview

我有一个我在界面构建器中设置的视图,我在IB中添加了一个scrollView,现在我正在尝试添加另一个scrollView,它只是父scrollView的一部分。 在儿童滚动视图上我试图使用动态大小的标签,它将位于其他固定标签下。

UIScrollView *ingredientsScrollView = [[UIScrollView alloc]
                                       initWithFrame:CGRectMake(20, 287, 280, 300)];
ingredientsScrollView.scrollEnabled = YES;
UILabel *ingredientsLabel = [[UILabel alloc] initWithFrame:CGRectMake(230, 310, 70, 21)];
ingredientsLabel.text = @"מצרכים";

UILabel *baseLabel = [[UILabel alloc] initWithFrame:CGRectMake(230, 325, 70, 21)];
baseLabel.text = @"חומרים לבסיס";

UILabel *baseIngredientsLabel = [[UILabel alloc] init];

    CGSize maximumLabelSize = CGSizeMake(296,9999);

CGSize expectedLabelSize = [baseIngredientsString sizeWithFont:baseIngredientsLabel.font
                                  constrainedToSize:maximumLabelSize
                                      lineBreakMode:baseIngredientsLabel.lineBreakMode];

//adjust the label the new height.
CGRect newFrame = baseIngredientsLabel.frame;
newFrame.size.height = expectedLabelSize.height;
baseIngredientsLabel.frame = newFrame;

//i added text to the string in some way
baseIngredientsLabel.text = baseIngredientsString;

[ingredientsScrollView addSubview:ingredientsLabel];
[ingredientsScrollView addSubview:baseIngredientsLabel];

[scrollView addSubview:ingredientsScrollView];

当我运行app时,不添加子scrollView,也不添加标签?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

儿童scrollview正在添加好,只是你没有注意到它,因为它有白色背景,而父卷轴视图也有白色背景。此外,您还没有为任何一个scrollView设置contentSize属性,因此它们不会滚动。您的标签偏离当前视图,您无法滚动查看它们。

尝试一下这类事情来分析你的观点:

self.scrollView.contentSize = CGSizeMake(400,9999);
ingredientsScrollView.contentSize = CGSizeMake(400,9999);
self.scrollView.backgroundColor = [UIColor redColor];
ingredientsScrollView.backgroundColor = [UIColor blueColor];

答案 1 :(得分:0)

首先尝试一些事情。

尝试将ingredientsScrollView直接添加到视图中。如果它没有显示,则可能是方法未被调用的问题。这也将测试您的标签是否已添加到ingrediantsScrollView

另外,关于动态大小的UILabel。你为什么不只是使用[baseIngredientsLabel sizeToFit]?它比你目前试图用框架做的要简单得多。