ios - 我们如何使用自动布局提供按钮之间的水平间距(视觉格式的约束)

标签 ios swift

嗨,我正在尝试使用自动布局以编程方式在我的 View Controller 上插入三个按钮,在这里我想保持按钮之间的水平间距“10”,但它设置不正确,请帮助我使用“视觉格式”的约束

我的代码:-

NSDictionary * views = NSDictionaryOfVariableBindings(accessoryView,leftButton,firstButton,rightButton);

     //middle button
        constraint = [NSLayoutConstraint constraintWithItem:firstButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:40.f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:firstButton attribute:NSLayoutAttributeCenterX relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeCenterX multiplier:1.0f constant:0.0f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:firstButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:50.0f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:firstButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:30.0f];
        [self.view addConstraint:constraint];

        //Left button
        constraint = [NSLayoutConstraint constraintWithItem:leftButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:40.f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:leftButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:50.0f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:leftButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:30.0f];
        [self.view addConstraint:constraint];

        //Right button
        constraint = [NSLayoutConstraint constraintWithItem:rightButton attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0f constant:40.f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:rightButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:50.0f];
        [self.view addConstraint:constraint];

        constraint = [NSLayoutConstraint constraintWithItem:rightButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem: nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:30.0f];
        [self.view addConstraint:constraint];

        //Horizental spacing
        NSArray * horizontalConstraintsforbuttons = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[leftButton]-10-[firstButton]-10-[rightButton]|" options:0 metrics:nil views:views];

        [self.view addConstraints:horizontalConstraintsforbuttons];

最佳答案

试试这个....让button1尾随等于button2,以常量开头,无论你想要什么

// btn1.trailing = btn2.leading
[self.view  addConstraint:[NSLayoutConstraint constraintWithItem:btn2
                                                       attribute:NSLayoutAttributeLeading
                                                       relatedBy:NSLayoutRelationEqual
                                                           toItem:btn1
                                                       attribute: NSLayoutAttributeTrailing
                                                      multiplier:1
                                                        constant:10]];


 // btn2.trailing = btn3.leading
[self.view  addConstraint:[NSLayoutConstraint constraintWithItem:btn3
                                                       attribute:NSLayoutAttributeLeading
                                                       relatedBy:NSLayoutRelationEqual
                                                           toItem:btn2
                                                       attribute: NSLayoutAttributeTrailing
                                                      multiplier:1
                                                        constant:10]];

所以它变成-|btn1|-10-|btn2|-10-|btn3|-

关于ios - 我们如何使用自动布局提供按钮之间的水平间距(视觉格式的约束),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31758510/

相关文章:

ios - requestImageDataForAsset 返回 nil 图像数据

swift - 如何检查实例是否为枚举类型

ios - 具有许多 subview 的 UIScrollView 需要时间来处理

objective-c - 监视 Objective C 中方法的结束

IOS-Swift, CarbonKit 被打回来时,Icons 还在pager 停留了一会儿,如何让它们立即消失

swift - 过滤数组数组时扫描所有/特定数组值

ios - swift 中的强类型选择器

ios - 如何将字符串转换为CFMutableString?

ios - 无法获取权限提示

ios - 如何使用大量的3d模型