2

考虑以下结构:

| UIScrollView | UITextField | (左侧为 UIScrollView,右侧为 UITextField)

我正在尝试将 UILabel 添加到 UIScrollView 并使 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)]];
}

这里的问题是 UIScrollView 没有被调整大小,因为 UITextField 具有固定的宽度。如果我以编程方式删除宽度 UITextField 约束,UIScrollView 将接管所有宽度而不考虑文本标签(intrinsicContentSize)。我需要手动设置 Scrollview contentsize 还是可以使用自动布局自动设置?

谢谢

4

0 回答 0