2

次の実装があるとします。

  • UIPageViewController
  • UIScrollViewと呼ばれるmainScrollViewとして追加されsubviewましたUIPageViewController.view

    [UIScrollView setTranslatesAutoresizingMaskIntoConstraints:NO];

  • UIScrollViewを使用してレイアウトされたNSLayoutConstraintsサブビューと、各サブビューがsetTranslatesAutoresizingMaskIntoConstraintsNO になっています。

UIScrollViewサブビュー内の最大の MaxY 座標と等しくなるようにコンテンツ サイズを設定するにはどうすればよいですか?

これは私のコードのサンプルです:

UIScrollView *scrollView = [self mainScrollView];
UIView *superView = [self view];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(scrollView, superView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView(==superView)]|" options:0 metrics: 0 views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView(==superView)]|" options:0 metrics: 0 views:viewsDictionary]];

UIView *previousView = scrollView;
for (int i=0;i<150; i++) {
    UITextView * textView = [[UITextView alloc] init];
    [textView setBackgroundColor:[UIColor colorWithRed:101.1f/255.f green:175.f/255.f blue:105.f/255.f alpha:1.f]];
    [textView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [scrollView addSubview:textView];
    [scrollView addConstraint:[NSLayoutConstraint constraintWithItem:textView
                                                           attribute:NSLayoutAttributeTop
                                                           relatedBy:NSLayoutRelationEqual
                                                              toItem:previousView
                                                           attribute:NSLayoutAttributeTop
                                                          multiplier:1
                                                            constant:50]];
    [scrollView addConstraint:[NSLayoutConstraint constraintWithItem:textView
                                                           attribute:NSLayoutAttributeLeft
                                                           relatedBy:NSLayoutRelationEqual
                                                              toItem:textView.superview
                                                           attribute:NSLayoutAttributeLeft
                                                          multiplier:1
                                                            constant:0]];
    [scrollView addConstraint:[NSLayoutConstraint constraintWithItem:textView
                                                           attribute:NSLayoutAttributeWidth
                                                           relatedBy:NSLayoutRelationEqual
                                                              toItem:scrollView
                                                           attribute:NSLayoutAttributeWidth
                                                          multiplier:1
                                                            constant:0]];
    [scrollView addConstraint:[NSLayoutConstraint constraintWithItem:textView
                                                           attribute:NSLayoutAttributeHeight
                                                           relatedBy:NSLayoutRelationEqual
                                                              toItem:scrollView
                                                           attribute:NSLayoutAttributeNotAnAttribute
                                                          multiplier:1
                                                            constant:40]];
    previousView = textView;
}
4

2 に答える 2

0

viewController viewDidLayoutSubviewsを使用して、制約ソルバーがビューのレイアウトを終了したポイントをキャプチャすることをお勧めします。次に、最大の frame.origin.y を持つ subView を取得し、その高さとオプションでオフセットを追加します。このようなもの:

scrollView.contentSize = CGSizeMake(superView.frame.size.width,maximumYView.origin.y + maximumYView.size.height + offset);
于 2013-01-15T01:59:54.143 に答える
-1

次のように設定できます。

[mainScrollView setContentSize:CGSizeMake(yourWidth,yourHeight)];
于 2012-12-17T13:17:59.777 に答える