ios - 如何在 Ios 中使用自动布局制作垂直间距黑白 UIFields

标签 ios objective-c autolayout

enter image description here

嗨,我是 iOS 的新手,在我的应用程序中,我使用的是自动布局视觉格式

但是我怎样才能在不同的条件下改变垂直间距

为此我使用了下面的代码,但垂直间距没有设置黑白 UIfields

请看我在此处给出的屏幕下方垂直空间“15”,但它不适用

我的代码:-

- (void)viewDidLoad {
    [super viewDidLoad];

 NSDictionary * views1 = NSDictionaryOfVariableBindings(RoundTripLabel,RoundTripDateTextField,RoundTripButton,BottomLabel1,BottomLabel2);


//Appying Horizental contstraints:-

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[RoundTripLabel]-8-|" options:0 metrics:nil views:views1]];

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[RoundTripDateTextField]-8-[RoundTripButton(30)]-|" options:0 metrics:nil views:views1]];

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[BottomLabel1]-8-|" options:0 metrics:nil views:views1]];

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-8-[BottomLabel2]-8-|" options:0 metrics:nil views:views1]];


    //Appying Vertical contstraints:-

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-100-[RoundTripLabel(17)]-10-[RoundTripDateTextField]-0-[BottomLabel1(17)]-10-[BottomLabel2(17)]" options:0 metrics:nil views:views1]];

     NSDictionary * views2 = NSDictionaryOfVariableBindings(RoundTripLabel,RoundTripButton);

    [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[RoundTripLabel]-10-[RoundTripButton]" options:0 metrics:nil views:views2]];


    //Defining  Heights Using Constraint With Item Formate:-

    RoundTripDateTextFieldHeight = [NSLayoutConstraint constraintWithItem:RoundTripDateTextField attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:30.0f];
    [MainScrollView addConstraint:RoundTripDateTextFieldHeight];

    RoundTripButtonHeight = [NSLayoutConstraint constraintWithItem:RoundTripButton attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:30.0f];
    [MainScrollView addConstraint:RoundTripButtonHeight];

    VerticalSpacing = [NSLayoutConstraint constraintWithItem:BottomLabel1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:RoundTripDateTextField attribute:NSLayoutAttributeBottom multiplier:1.0f constant:15.0f];
    [MainScrollView addConstraint:RoundTripDateTextFieldHeight];

    [MainScrollView setNeedsDisplay];

}

最佳答案

在您的代码中,这些约束存在问题

第一个约束:

无需再次添加 RoundTripDateTextFieldHeight,您需要添加 VerticalSpacing

VerticalSpacing = [NSLayoutConstraint constraintWithItem:BottomLabel1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:RoundTripDateTextField attribute:NSLayoutAttributeBottom multiplier:1.0f constant:15.0f];
[MainScrollView addConstraint:VerticalSpacing];  // instead of [MainScrollView addConstraint:RoundTripDateTextFieldHeight];

第二

在两个标签之间添加垂直间距

NSLayoutConstraint *VerticalSpacingLbl2 = [NSLayoutConstraint constraintWithItem:BottomLabel2 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:BottomLabel1 attribute:NSLayoutAttributeBottom multiplier:1.0f constant:10.0f];
[MainScrollView addConstraint:VerticalSpacingLbl2];  

第三

在限制条件下改变

  //Appying Vertical contstraints:-

  [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-100-[RoundTripLabel(17)]-10-[RoundTripDateTextField]-0-[BottomLabel1(17)]-10-[BottomLabel2(17)]" options:0 metrics:nil views:views1]];

有了这个

 [MainScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-100-[RoundTripLabel(17)]-10-[RoundTripDateTextField]" options:0 metrics:nil views:views1]];

关于ios - 如何在 Ios 中使用自动布局制作垂直间距黑白 UIFields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598824/

相关文章:

objective-c - 有什么方法可以获取在 Objective C 中被点击的对象?

ios - 在 UILabel 之后放置一个 UIImage

ios - 如何更新 waitForDuration 常量?

objective-c - cocoa 。有没有办法完全禁用所有窗口的自动布局/约束?

ios - 如何在 xcode 中水平均匀分布按钮

ios - 如何更改以编程方式为 UIButton 添加的约束

ios - 无法写入 'random state' e 是 65537 (0x10001)

objective-c - Objective C 中数据类型 id 与 NSString 的优势?

objective-c - AVCaptureDevice,以特定采样频率捕获WAV音频

ios - 获取顶部约束的引用