簡體   English   中英

我們如何使用自動布局提供按鈕之間的水平間距(受視覺效果的限制)

[英]How can we provide horizontal spacing between buttons using auto-layouts(constraint with visual formate)

嗨,我正在嘗試使用自動布局在我的視圖控制器上以編程方式插入三個按鈕,在這里我想保持按鈕“ 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|-

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM