2014-10-27 3 views
0

Итак, я пытаюсь получить первую и третью кнопку, чтобы заняться остальной частью панели вкладок и сделать вторую кнопку постоянной шириной. Я приближаюсь, но, похоже, я не понимаю. Это мой первый раз, добавляя ограничения программным образом, поэтому я приветствую конструктивную критику. Вот код. На изображении каждый цвет представляет собой кнопку.Автоматическое добавление ограничений на iOS

- (void)setUpTabbarProperties { 
    [self.tabBar setHidden: YES]; 
    [self.customTabBarView setTranslatesAutoresizingMaskIntoConstraints: NO]; 
    [self.firstButton setTranslatesAutoresizingMaskIntoConstraints: NO]; 
    [self.secondButton setTranslatesAutoresizingMaskIntoConstraints: NO]; 
    [self.thirdButton setTranslatesAutoresizingMaskIntoConstraints: NO]; 
    [self.view addSubview: self.customTabBarView]; 


    // This will add the constraints 
    NSDictionary *viewDictionary = [NSDictionary dictionaryWithObjectsAndKeys: self.customTabBarView, @"customTabBar", 
                       self.firstButton, @"firstButton", 
                       self.secondButton, @"secondButton", 
                       self.thirdButton, @"thirdButton", nil]; 

    NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-0-[customTabBar]-0-|" 
                      options: 0 
                      metrics: nil 
                       views: viewDictionary]; 

    NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:[customTabBar]-0-|" 
                      options: 0 
                      metrics: nil 
                      views: viewDictionary]; 

    NSArray *heightContraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:[customTabBar(50)]" 
                     options: 0 
                     metrics: nil 
                      views: viewDictionary]; 

    NSArray *buttonHConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-0-[firstButton]-0-[secondButton]-0-[thirdButton]-0-|" 
                      options: 0 
                      metrics: nil 
                      views: viewDictionary]; 

    NSArray *firstButtonVConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-0-[firstButton]-0-|" 
                     options: 0 
                     metrics: nil 
                      views: viewDictionary]; 

    NSArray *secondButtonVConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-0-[secondButton]-0-|" 
                      options: 0 
                      metrics: nil 
                      views: viewDictionary]; 

    NSArray *thirdButtonVConstraints = [NSLayoutConstraint constraintsWithVisualFormat: @"V:|-0-[thirdButton]-0-|" 
                      options: 0 
                      metrics: nil 
                      views: viewDictionary]; 

    NSArray *secondButtonWithConstraint = [NSLayoutConstraint constraintsWithVisualFormat: @"H:[secondButton(65)]" 
                        options: 0 
                        metrics: nil 
                        views: viewDictionary]; 

    [self.view addConstraint: [NSLayoutConstraint constraintWithItem: self.secondButton 
                  attribute: NSLayoutAttributeCenterY 
                  relatedBy: NSLayoutRelationEqual 
                   toItem: self.customTabBarView 
                  attribute: NSLayoutAttributeCenterY 
                  multiplier: 0 
                  constant: 0]]; 

    [self.view addConstraints: horizontalConstraints]; 
    [self.view addConstraints: verticalConstraints]; 
    [self.view addConstraints: heightContraints]; 
    [self.view addConstraints: buttonHConstraints]; 
    [self.view addConstraints: firstButtonVConstraints]; 
    [self.view addConstraints: secondButtonVConstraints]; 
    [self.view addConstraints: thirdButtonVConstraints]; 
    [self.view addConstraints: secondButtonWithConstraint]; 
} 

и вот как он выглядит

enter image description here

ответ

0

я пропускал ограничение. Я пытался использовать другой, и это не сработало, но это было сделано.

 NSArray *firstAndThirdButtonConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[firstButton(==thirdButton)]" 
                        options:0 
                        metrics:nil views:viewDictionary]; 
Смежные вопросы