2

次の構造を考慮します。

| | UIScrollView | UIScrollView | UITextField | (左側に UIScrollView、右側に UITextField)

UIScrollView に UILabel を追加し、UIScrollView を UILabel のサイズに応じて大きくしようとしています。UITextFiled は、UIScrollView の成長に応じて小さくなります。

- (IBAction)makeScrollViewGrow:(id)sender
    self.myScrollView.translatesAutoresizingMaskIntoConstraints = NO;
    self.myTextField.translatesAutoresizingMaskIntoConstraints = NO;
    UILabel *myLabel = [[UILabel alloc] init];
    myLabel.text = @"THIS IS A LONG MESSAGE";
    myLabel.translatesAutoresizingMaskIntoConstraints = NO;
    [self.myScrollView addSubview:myLabel];
    UITextField *theTextField = self.myTextField;
    [self.myTextField removeConstraint:self.titleTextFieldWidthConstraint];
    [self.myScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[myLabel]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(myLabel)]];
    [self.myScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[myLabel]|" options:0 metrics:0 views:NSDictionaryOfVariableBindings(myLabel)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[theSCrollView]-8-[theTextField]-20-|" options:0 metrics: 0 views:NSDictionaryOfVariableBindings(theSCrollView, theTextField)]];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[theSCrollView]|" options:0 metrics: 0 views:NSDictionaryOfVariableBindings(theSCrollView)]];
}

ここでの問題は、UITextField の幅が固定されているため、UIScrollView のサイズが変更されないことです。プログラムで幅 UITextField 制約を削除すると、UIScrollView はテキスト ラベル (intrinsicContentSize) を考慮せずにすべての幅を引き継ぎます。Scrollview contentsize を手動で設定する必要がありますか、それとも autolayout を使用して自動的に設定できますか?

ありがとう

4

0 に答える 0