我试图学习视觉格式语言,并且试图弄清打破自动布局约束的情况。

    /**
 * @Name: setUpContainerViews
 * @Description: This is will set up the different 
 * @Parameters: None
 * @Returns: void
 * @Throws: No Exception
 */

- (void)setUpContainerViews {
    tallContainer = [[UIView alloc] init];
    self.topContainerView = [[UIView alloc] init];
    self.bottomContainerView = [[UIView alloc] init];
    self.leftContainerView = [[UIView alloc] init];
    self.rightContainerView = [[UIView alloc] init];

    // We need to add the subviews here because auto layout needs them to be a part of the view.
    [self.view addSubview: tallContainer];
    [self.view addSubview: self.rightContainerView];

    [tallContainer addSubview: self.topContainerView];
    [tallContainer addSubview: self.leftContainerView];
    [tallContainer addSubview: self.bottomContainerView];

    [self.topContainerView setBackgroundColor: [UIColor blueColor]];
    [self.rightContainerView setBackgroundColor: [UIColor orangeColor]];
    [self.leftContainerView setBackgroundColor: [UIColor greenColor]];
    [self.bottomContainerView setBackgroundColor: [UIColor lightGrayColor]];
}

/**
 * @Name: setUpLayoutConstraints
 * @Description: This will set up the layout constraints
 * @Parameters: none
 * @Returns: void 
 * @Throws: No Exception
 */

- (void)setUpLayoutConstraints {

    // Check if all three properties exist
    NSMutableArray *constraintArray = [NSMutableArray array];

    NSDictionary *views = @{
                                @"tallContainer":tallContainer,
                                @"topContainer":self.topContainerView,
                                @"leftContainer":self.leftContainerView,
                                @"rightContainer":self.rightContainerView,
                                @"bottomContainer":self.bottomContainerView
                           };

    // This is for the self.view
    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-(0)-[tallContainer]-(0)-[rightContainer(50)]-(0)-|" options:0 metrics:nil views: views]];

    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-(0)-[tallContainer]-(0)-|" options:0 metrics:nil views: views]];
    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-(0)-[rightContainer]-(0)-|" options:0 metrics:nil views: views]];

    // This is for the tall container
    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-(0)-[topContainer(75)]-(0)-[leftContainer]-(0)-[bottomContainer(75)]-(0)-|" options:0 metrics:nil views: views]];

    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-(0)-[topContainer]-(0)-|" options:0 metrics:nil views: views]];
    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-(0)-[leftContainer]-(0)-|" options:0 metrics:nil views: views]];
    [constraintArray addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-(0)-[bottomContainer]-(0)-|" options:0 metrics:nil views: views]];

    // This will add the constraints
    [self.view addConstraints: [constraintArray copy]];
}

这些首先是打破的约束,需要更多...

       2015-05-16 11:08:34.222 HighSchoolUMS[4776:1420732] Unable to simultaneously satisfy constraints.
        Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
    (
        "<NSLayoutConstraint:0x7fe898e11760 V:|-(0)-[UIView:0x7fe898e0f210]   (Names: '|':UIView:0x7fe898e0f100 )>",
        "<NSLayoutConstraint:0x7fe898e117e0 V:[UIView:0x7fe898e0f210(75)]>",
        "<NSAutoresizingMaskLayoutConstraint:0x7fe898d2bb80 h=--& v=--& UIView:0x7fe898e0f210.midY ==>"
    )

    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x7fe898e11760 V:|-(0)-[UIView:0x7fe898e0f210]   (Names: '|':UIView:0x7fe898e0f100 )>

    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

我不知道他们为什么要打破它,这似乎很简单,我在这里错过了什么吗? (很明显,我是)这个应用程序在横向方向上是有帮助的。

  ask by Michael Choi translate from so

本文未有回复,本站智能推荐:

1回复

AutoLayout令人困惑的约束错误

我正在尝试在自定义导航栏上添加子视图。 正在使用“自定义导航栏”,以便增加栏的高度以适合额外的子视图。 问题是我试图使用AutoLayout添加新视图,并且在向新视图添加VFL水平约束时,我在NSLog中收到有关“无法同时满足约束”的错误,我不理解。 这是我在做什么: 这是
4回复

无法满足约束-视觉格式语言

我开始以编程方式使用自动版式和约束,但我不明白为什么收到以下警告 我知道导致错误的代码行是: 但我不明白为什么不能满足约束条件。 这可能是一个愚蠢的问题,但是由于不完整的文档,我对自动版式还是陌生的,而且这个主题令人困惑。 我尝试了不同的变体和解决方案,但未能找到正确的变体和
1回复

iOS Autolayout使用VFL以编程方式约束

我想要这样一个关闭按钮, 我试图固定按钮,但是按钮被缩小或消失了这是代码, 缩水 错误消失 蓝色视图也是使用自动布局设置的,并且在所有屏幕上都可以正常工作。 在所有设备(如图像所示)中提供关闭按钮支持时,我应该应用哪些约束条件?
1回复

根据其他标签文本设置UILabel约束

我有一个带有2个标签(1)的UITableViewCell,用于表示人(2)的名称,并记录了有关他的注释。 我需要使用VFL在标签上方布置标签,并且效果很好。 但是-如果注释为空,我希望名称标签在单元格中垂直居中。 我是否需要添加其他约束,或者是否有其他方法可以在VFL中设置此条件
1回复

将可视格式语言转换为大于约束

我如何将其转换为约束? 会是这样吗?
1回复

根据旋转更新约束(X,Y,W,H)时出错?

在这里,我使用视觉格式语言来处理自动版式。 如果我将方向从横向还原为纵向-视图无法正确显示。(图像(收缩)和第二个标签(Y位置)) 。 即使在纵向模式下,我在Debugger窗口上也没有收到任何Constraints错误消息。 但是如果我切换到横向模式-其打印内容“无法同时满足约束条件。”
1回复

如何使用自动布局约束将自定义宽度的按钮居中?

请参见以下代码: 我遇到的问题是H:|-[start(100)]-| 将无法正常工作。 我想要的是一个宽度为100的按钮,该按钮以X轴为中心,并以默认边距连接到屏幕底部。 我一卸下(100)它就会起作用,但是按钮会拉伸到屏幕的宽度减去默认边距。 当我指定自定义宽度时,我认为自动版
1回复

NSLayoutConstrain-将尝试通过打破约束来进行恢复-以编程方式创建约束[重复]

这个问题已经在这里有了答案: 无法同时满足约束条件,将尝试通过打破约束条件来恢复 14个答案 它运行正常,除了我收到此错误外,没有什么错。 下面是我的代码。 以下是我在调试区域中收到的错误消息。 我如何解决它?
1回复

iOS底部将对象与程序化自动布局约束对齐

我试图放置一个按钮,使其始终是屏幕底部的X像素。 使用自动布局以编程方式对视图进行布局。 如果使用: @"V:|-44-[closeModalButton]" ,对象将按预期从屏幕顶部对齐44个像素。 但是, @"V:[closeModalButton]-44-|" 导致按钮永不显示。
1回复

在UICollectionViewCell中以编程方式设置布局约束

我有一个集合视图单元格,我试图在其中布置三个标签和一个图像。 我似乎可以使垂直布局正常运行,但是我似乎无法使水平布局达到可接受的状态-标签似乎并不想按照我的意愿工作。 基本上,垂直尺寸是固定的,但是我可以根据屏幕的宽度来更改单元格的水平尺寸,但是通常在320左右。我希望图像处于固定位置,