【问题标题】:Auto Layout of a UIViewController in Code using the Visual Formatting Language使用视觉格式化语言在代码中自动布局 UIViewController
【发布时间】:2013-03-03 21:24:42
【问题描述】:

我想使用可视格式化语言在代码中使用自动布局将视图 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 根本不显示。

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

【问题讨论】:

    标签: ios objective-c uiview uiviewcontroller autolayout


    【解决方案1】:

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

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

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

    垂直约束也是如此。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2015-09-04
      • 2017-07-03
      相关资源
      最近更新 更多