如何使用自动布局以编程方式向滚动视图添加uiTextfield

我想使用自动布局以编程方式将文本字段添加到滚动视图,但是添加文本字段时,它以正确的大小显示在左上角,但没有宽度(也许2像素)。我如何才能将文本字段限制为屏幕的宽度?

以下是我的viewDidLoad方法:

    self.scrollView = [[UIScrollView alloc] init];
    [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:self.scrollView];

    self.emailField = [[UITextField alloc] init];
    [self.emailField setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.scrollView addSubview:self.emailField];

    NSDictionary *views = @{ @"view":self.view, @"scrollView":self.scrollView,  @"textField":self.emailField};

    [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"
    options:0
    metrics:nil
    views:views]];

    [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|"
    options:0
    metrics:nil
    views:views]];

    [self.scrollView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[textField]|"
    options:0
    metrics:nil
    views:views]];

    [self.scrollView addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[textField(46)]"
    options:0
    metrics:nil
    views:views]];
桑迪普

我使用了与您发布的代码相同的代码,并修改了一些约束并添加了一些约束。

 UITextField *emailField = [[UITextField alloc] init];
    emailField.backgroundColor = [UIColor lightGrayColor];
    emailField.translatesAutoresizingMaskIntoConstraints = NO;
    self.emailField = emailField;

    UIScrollView *scrollView = [[UIScrollView alloc] init];

    self.scrollView = scrollView;
    [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.view addSubview:self.scrollView];

    NSDictionary *views = @{ @"view":self.view, @"scrollView":self.scrollView,  @"textField":self.emailField, @"topLayoutGuide": self.topLayoutGuide};

    [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"
                                                                       options:0
                                                                       metrics:nil
                                                                         views:views]];

    [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|"
                                                                       options:0
                                                                       metrics:nil
                                                                         views:views]];

    [self.emailField setTranslatesAutoresizingMaskIntoConstraints:NO];
    [self.scrollView addSubview:self.emailField];


    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.emailField
                                                          attribute:NSLayoutAttributeLeading
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.scrollView
                                                          attribute:NSLayoutAttributeLeading
                                                         multiplier:1.0
                                                           constant:10]];
    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.emailField
                                                          attribute:NSLayoutAttributeTrailing
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.scrollView
                                                          attribute:NSLayoutAttributeTrailing
                                                         multiplier:1.0
                                                           constant:10]];

    [self.view addConstraint:[NSLayoutConstraint constraintWithItem:self.emailField attribute:NSLayoutAttributeWidth
                                                          relatedBy:NSLayoutRelationEqual
                                                             toItem:self.scrollView
                                                          attribute:NSLayoutAttributeWidth
                                                         multiplier:1.0
                                                           constant:-20]];

    [self.view addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@"V:[topLayoutGuide][textField(46)]"
                                                                             options:0
                                                                             metrics:nil
                                                                               views:views]];

重要的约束是宽度约束,它与scrollView的边界有关。如果您未通过自动布局在scrollView中定义子视图的宽度,则scrollView的contentSize会模棱两可,因此无法正确确定内容的宽度。“ |” scrollView的自动布局格式是contentSize边缘。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用自动布局以编程方式添加视图会产生“ NSGenericException”,原因:“无法在视图上安装约束

来自分类Dev

如何以编程方式添加自动布局约束以使按钮在其视图底部上方50点?

来自分类Dev

使用自动布局以编程方式将子视图添加到UICollectionView中不起作用

来自分类Dev

在UIScrollView子视图中使用自动布局(以编程方式)

来自分类Dev

使用自动布局以编程方式创建视图层次结构

来自分类Dev

在UIScrollView子视图中使用自动布局(以编程方式)

来自分类Dev

如何以编程方式向简单的表格布局添加边框

来自分类Dev

以编程方式以线性布局滚动视图

来自分类Dev

以编程方式向UITextField添加约束

来自分类Dev

使用自动布局隐藏UIView时以编程方式添加约束

来自分类Dev

使用自动布局隐藏UIView时以编程方式添加约束

来自分类Dev

如何在Android中使用相对布局向滚动视图添加背景图像?

来自分类Dev

如何以编程方式向NSWindow(或NSView)添加视图?

来自分类Dev

将以编程方式创建的视图垂直添加到滚动视图中(iOS中的线性布局)

来自分类Dev

以编程方式添加可滚动的线性布局

来自分类Dev

如何使用 Swift 4 中的锚以编程方式向 UIScrolllView 添加视图

来自分类Dev

使用自动布局以编程方式将子视图添加到UIView时来源不正确

来自分类Dev

在 Swift 中,以编程方式创建 UIView 并向其添加控件并使用自动布局,使控件显示在视图的父级上

来自分类Dev

iOS将视图添加为子视图,以编程方式自动布局冲突约束

来自分类Dev

如何使用“自动布局”以编程方式表示此UITableCell的内容?

来自分类Dev

以编程方式向视图添加约束

来自分类Dev

如何在Swift中以编程方式复制视图?自动布局如何影响新创建的视图?

来自分类Dev

如何在Swift中以编程方式复制视图?自动布局如何影响新创建的视图?

来自分类Dev

如何以编程方式使用“自动布局”将活动指示器定位到其视图的中心?

来自分类Dev

使用自动布局以编程方式居中UIView可使视图从超级视图中消失

来自分类Dev

以编程方式使用自动布局对齐NSView

来自分类Dev

使用自动布局iOS以编程方式滚动到特定页面/位置

来自分类Dev

以编程方式在线性布局中滚动视图

来自分类Dev

如何以编程方式创建滚动视图

Related 相关文章

  1. 1

    使用自动布局以编程方式添加视图会产生“ NSGenericException”,原因:“无法在视图上安装约束

  2. 2

    如何以编程方式添加自动布局约束以使按钮在其视图底部上方50点?

  3. 3

    使用自动布局以编程方式将子视图添加到UICollectionView中不起作用

  4. 4

    在UIScrollView子视图中使用自动布局(以编程方式)

  5. 5

    使用自动布局以编程方式创建视图层次结构

  6. 6

    在UIScrollView子视图中使用自动布局(以编程方式)

  7. 7

    如何以编程方式向简单的表格布局添加边框

  8. 8

    以编程方式以线性布局滚动视图

  9. 9

    以编程方式向UITextField添加约束

  10. 10

    使用自动布局隐藏UIView时以编程方式添加约束

  11. 11

    使用自动布局隐藏UIView时以编程方式添加约束

  12. 12

    如何在Android中使用相对布局向滚动视图添加背景图像?

  13. 13

    如何以编程方式向NSWindow(或NSView)添加视图?

  14. 14

    将以编程方式创建的视图垂直添加到滚动视图中(iOS中的线性布局)

  15. 15

    以编程方式添加可滚动的线性布局

  16. 16

    如何使用 Swift 4 中的锚以编程方式向 UIScrolllView 添加视图

  17. 17

    使用自动布局以编程方式将子视图添加到UIView时来源不正确

  18. 18

    在 Swift 中,以编程方式创建 UIView 并向其添加控件并使用自动布局,使控件显示在视图的父级上

  19. 19

    iOS将视图添加为子视图,以编程方式自动布局冲突约束

  20. 20

    如何使用“自动布局”以编程方式表示此UITableCell的内容?

  21. 21

    以编程方式向视图添加约束

  22. 22

    如何在Swift中以编程方式复制视图?自动布局如何影响新创建的视图?

  23. 23

    如何在Swift中以编程方式复制视图?自动布局如何影响新创建的视图?

  24. 24

    如何以编程方式使用“自动布局”将活动指示器定位到其视图的中心?

  25. 25

    使用自动布局以编程方式居中UIView可使视图从超级视图中消失

  26. 26

    以编程方式使用自动布局对齐NSView

  27. 27

    使用自动布局iOS以编程方式滚动到特定页面/位置

  28. 28

    以编程方式在线性布局中滚动视图

  29. 29

    如何以编程方式创建滚动视图

热门标签

归档