3

我想使用可视格式化语言在代码中使用自动布局将视图emptyAddButton放置在左下角。这是我目前的方法。

初始化按钮emptyAddButton,自定义 UIViewController:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
...
        emptyAddButton = [[AddCardViewController alloc] init];
        [emptyAddButton.view setFrame:CGRectMake(50, 300, 190, 65)]; //to define width + height. x, y is random and should be overwritten by auto auto layout
        [self addChildViewController:emptyAddButton];
        [emptyAddButton.view setTranslatesAutoresizingMaskIntoConstraints:NO];
        [self.view addSubview:emptyAddButton.view];
...
}

为左下位置 + 填充分配自动布局 (10)

-(void)viewWillAppear:(BOOL)animated{
...
    NSDictionary *viewToLayout = [NSDictionary dictionaryWithObject:emptyAddButton.view forKey:@"emptyAddButton"];
    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(10)-[emptyAddButton]"
                                                                      options:0
                                                                      metrics:nil
                                                                        views:viewToLayout]];

    [self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat: @"V:[emptyAddButton]-(10)-|"
                                                                      options:0
                                                                      metrics:nil
                                                                        views:viewToLayout]];
...
}

目前emptyAddButton根本不显示。

知道如何正确定位视图吗?

4

1 回答 1

3

您不能设置框架,关闭自动调整大小的蒙版并添加约束 - 它会丢弃您的框架并重新计算为零宽度和高度。您可以通过注销视图控制器的子视图来确认这一点。

也将大小添加到 VFL 字符串:

"H:|-(10)-[emptyAddButton(==190)]"

垂直约束也是如此。

顺便说一句,将视图的创建和约束的设置分开没有任何好处。一次完成所有操作(我会在 viewDidLoad 中完成)。目前,每次视图出现时,您都在重新创建约束。

于 2013-03-03T22:23:32.363 回答