为什么以编程方式创建的视图会忽略其约束?

本·H

我有一个视图,可以以编程方式创建一个子视图并为其添加一些约束。由于某些原因,这些约束已被完全忽略。没有引发任何错误。约束根本不会生效。子视图与父视图具有相同的框架。我希望它是400x400,并以其超级视图为中心。我在这里做错了什么?这是我在超级视图中的initWithFrame:

- (id) initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        instructionsView = [[UIView alloc] initWithFrame:frame];
        [self addSubview:instructionsView];
        [self bringSubviewToFront:instructionsView];

        [self addConstraint:[NSLayoutConstraint constraintWithItem:instructionsView
                                                         attribute:NSLayoutAttributeCenterX
                                                         relatedBy:NSLayoutRelationEqual
                                                            toItem:self
                                                         attribute:NSLayoutAttributeCenterX
                                                        multiplier:1.
                                                          constant:0]];

        [self addConstraint:[NSLayoutConstraint constraintWithItem:instructionsView
                                                         attribute:NSLayoutAttributeCenterY
                                                         relatedBy:NSLayoutRelationEqual
                                                            toItem:self
                                                         attribute:NSLayoutAttributeCenterY
                                                        multiplier:1.
                                                          constant:0]];

        [instructionsView addConstraint:[NSLayoutConstraint constraintWithItem:instructionsView
                                                                     attribute:NSLayoutAttributeWidth
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:nil
                                                                     attribute:NSLayoutAttributeNotAnAttribute
                                                                    multiplier:1.
                                                                      constant:400]];

        [instructionsView addConstraint:[NSLayoutConstraint constraintWithItem:instructionsView
                                                                     attribute:NSLayoutAttributeHeight
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:nil
                                                                     attribute:NSLayoutAttributeNotAnAttribute
                                                                    multiplier:1.
                                                                      constant:400]];
    }
    return self;
}

我尝试改变

instructionsView = [[UIView alloc] initWithFrame:frame];

instructionsView = [[UIView alloc] initWithFrame:CGRectZero];

没有成功。

丹尼尔·胡德

您需要告诉视图不要使用基于自动调整大小的蒙版布局,而是使用自动布局

instructionsView.translatesAutoresizingMaskIntoConstraints = NO;

这里查看文档

另外,视图应该没有框架地创建,这主要是一种样式,但是要像这样创建视图:

instructionsView = [[UIView alloc] init];

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何以编程方式创建具有约束的视图

来自分类Dev

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

来自分类Dev

为什么.scrollHeight会按其方式工作?

来自分类Dev

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

来自分类Dev

容器视图约束问题,以编程方式

来自分类Dev

以编程方式创建布局,使用堆栈视图和约束不起作用

来自分类Dev

WooCommerce以编程方式创建的产品会忽略价格排序过滤器

来自分类Dev

如何以编程方式创建布局约束

来自分类Dev

快速约束以编程方式创建奇怪的行为

来自分类Dev

以编程方式创建约束-2盒

来自分类Dev

以编程方式创建约束时出错

来自分类Dev

为什么协变隐式强制转换会忽略泛型约束?

来自分类Dev

如果我以编程方式创建视图并将其添加到视图层次结构中,为什么它们需要成为强引用?

来自分类Dev

以编程方式创建UILabel并设置其位置

来自分类Dev

为什么以编程方式使用“自动布局”约束进行居中不起作用?

来自分类Dev

为什么我的纵横比约束在以编程方式设置时没有被激活?

来自分类Dev

如果在IB中使用自动版面设置视图,如果尝试以编程方式更改其框架会怎样?

来自分类Dev

以编程方式创建视图后添加样式

来自分类Dev

Android获取以编程方式创建的视图的宽度

来自分类Dev

以编程方式创建网格视图

来自分类Dev

以编程方式从逻辑文件创建视图?

来自分类Dev

无法以编程方式使用Gridlayout创建视图

来自分类Dev

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

来自分类Dev

以编程方式创建视图后添加样式

来自分类Dev

获取以编程方式创建的视图标签

来自分类Dev

Swift-以编程方式创建视图

来自分类Dev

使用编程约束在视图中创建2个视图

来自分类Dev

子视图以自动编程约束以编程方式使视图中的视图居中对齐

来自分类常见问题

尽管使用safeAreaLayoutGuide,但在视图中以编程方式创建约束不能解释导航控制器

Related 相关文章

  1. 1

    如何以编程方式创建具有约束的视图

  2. 2

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

  3. 3

    为什么.scrollHeight会按其方式工作?

  4. 4

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

  5. 5

    容器视图约束问题,以编程方式

  6. 6

    以编程方式创建布局,使用堆栈视图和约束不起作用

  7. 7

    WooCommerce以编程方式创建的产品会忽略价格排序过滤器

  8. 8

    如何以编程方式创建布局约束

  9. 9

    快速约束以编程方式创建奇怪的行为

  10. 10

    以编程方式创建约束-2盒

  11. 11

    以编程方式创建约束时出错

  12. 12

    为什么协变隐式强制转换会忽略泛型约束?

  13. 13

    如果我以编程方式创建视图并将其添加到视图层次结构中,为什么它们需要成为强引用?

  14. 14

    以编程方式创建UILabel并设置其位置

  15. 15

    为什么以编程方式使用“自动布局”约束进行居中不起作用?

  16. 16

    为什么我的纵横比约束在以编程方式设置时没有被激活?

  17. 17

    如果在IB中使用自动版面设置视图,如果尝试以编程方式更改其框架会怎样?

  18. 18

    以编程方式创建视图后添加样式

  19. 19

    Android获取以编程方式创建的视图的宽度

  20. 20

    以编程方式创建网格视图

  21. 21

    以编程方式从逻辑文件创建视图?

  22. 22

    无法以编程方式使用Gridlayout创建视图

  23. 23

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

  24. 24

    以编程方式创建视图后添加样式

  25. 25

    获取以编程方式创建的视图标签

  26. 26

    Swift-以编程方式创建视图

  27. 27

    使用编程约束在视图中创建2个视图

  28. 28

    子视图以自动编程约束以编程方式使视图中的视图居中对齐

  29. 29

    尽管使用safeAreaLayoutGuide,但在视图中以编程方式创建约束不能解释导航控制器

热门标签

归档