使用程序化自动布局显示视图

时间:2014-05-09 21:53:45

标签: ios autolayout

修改

我正在使用程序化的自动布局,这个问题似乎在逃避我,

在这个课程中

@interface FooterButtonView : UIView {
...
}

我试图并排排列两个观点

    - (void)setUpViewWithTwoElements:(UIView*)element1 :(UIView*)element2{

    element1.translatesAutoresizingMaskIntoConstraints = NO;
    element2.translatesAutoresizingMaskIntoConstraints = NO;

    NSDictionary* views = @{@"element1":element1, @"element2":element2};
    NSDictionary* metrics = @{@"buttonHeight":@30.0};
    NSString* horizontalFormatString = @"H:|-[element1]-[element2]-|";
    NSString* verticalFormatString = @"V:[element1(buttonHeight)]-|";

    [self addConstraints:[NSLayoutConstraint
                            constraintsWithVisualFormat:horizontalFormatString
                            options: NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom
                            metrics:nil
                            views:views]];

    [self addConstraints:[NSLayoutConstraint
                          constraintsWithVisualFormat:verticalFormatString
                          options:nil
                          metrics:metrics
                          views:views]];
}

但是没有显示任何元素。

在init中

我添加了两个子视图,然后调用上面的函数。这两个元素都来自UIButton。

非常感谢任何建议。谢谢!

1 个答案:

答案 0 :(得分:0)

你应该看到你发布的代码,假设调用此代码的init方法本身被调用(并且FooterButtonView显示的大小非零)。但你忽略的一件事是两个视图的相对水平尺寸。使用您拥有的代码,系统无法知道每个元素的大小,只是它们应该占据整个宽度减去标准间距。如果您希望两个视图的大小相同,请更改为

NSString* horizontalFormatString = @"H:|-[element1]-[element2(==element1)]-|";