0

我在 IB 中添加了一个视图。我在这个视图中有一个标签,它的高度会在运行时根据它所持有的文本而变化,现在我的问题是当标签大小变化时它超出了 UIView 的高度,所以我想在其中添加一个滚动视图此视图可查看完整标签。我添加了这样的滚动视图......

        CGRect scrollViewFrame = CGRectMake(0, 0, 320, 460);
        UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:scrollViewFrame];
        CGSize scrollViewContentSize = CGSizeMake(self.view.frame.size.width, 
                                                  (self.view.frame.size.height + 1000));
        [scrollView setContentSize:scrollViewContentSize];
        [self.view addSubview:scrollView];

在我的视图中添加此滚动视图后,当我向下滚动时,我的视图并没有向下移动。我在这里做错什么了吗...

谢谢你的帮助..

4

4 回答 4

2

如果您的scrollView 是您的视图的子视图,那么当您滚动scrollView 时视图不会移动。如果您希望视图在滚动时移动,则反之亦然(视图必须是 scrollView 的子视图)。因此,例如,如果您有一个带有 UILabel 的 UIView 需要滚动,则视图层次结构将是:

UIView (self.view) -> UIScrollView (scrollView) -> UIView -> UILabel

或者,您实际上并不需要 UIView 来保存 UILabel,因此 UILabel 可以作为 UIScrollView 的子视图添加。

UIScrollView 只会滚动其中的内容。

于 2012-10-12T05:42:16.803 回答
1

您应该将 labelView 添加到 ScrollView。从您的代码中,我可以看到您的滚动视图在您的视图内。这样想:

您有一辆车(您的视图),并且您希望它滚动到您需要给它一条比汽车更长的道路(ScrollView)。当你应该把车放在马路上时,你正在做的是把马路放在车里。

由于您使用的是 IB,我相信您应该:

  1. 将您的 ScrollView 添加到您的视图中(您的视图不会移动到任何地方)
  2. 将您的 labelView 添加到 scrollView 并将 scrollView 高度设置为您的 labelView 最终高度。

另一个选择是在 IB 中添加滚动视图并将您的视图添加到您的滚动视图中。重要的是您的 ScrollView 将是道路,而您的其他视图将在道路上。

于 2012-10-12T05:43:17.813 回答
1

尝试使用此代码..首先获取UIView并添加UILable您的新视图,就像下面的代码..就像一个流程..

    CGRect scrollViewFrame = CGRectMake(0, 0, 320, 460);
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:scrollViewFrame];
    CGSize scrollViewContentSize = CGSizeMake(self.view.frame.size.width, 
                                              (self.view.frame.size.height + 1000));
    [yourView addSubview:yourLable];
    [scrollView addSubview:yourView];
    [scrollView setContentSize:scrollViewContentSize];
    [self.view addSubview:scrollView];

我希望这可以帮助你...

:)

于 2012-10-12T05:53:22.640 回答
0

You should use a UITextView and add it as subview to your scrollview (scrollview is added to self.view):

// NSString *yourLabelString = (Your Label String)

    CGSize constraint = CGSizeMake(320, 10000);
    CGSize size = [yourLabelString sizeWithFont:[UIFont systemFontOfSize:20] constrainedToSize:constraint lineBreakMode:UILineBreakModeWordWrap];

    UITextView *yourTextView = [[UITextView alloc] init];

    yourTextView.frame = CGRectMake(0,0, size.width, size.height);
[scrollview addSubview:yourTextView];

scrollview.frame = CGRectMake(0, 0, 320, 460);
    scrollview.contentSize = CGSizeMake(size.width,size.height+20);
于 2012-10-12T06:27:31.467 回答