在iOS上以编程方式添加约束条件
问题描述:
因此,我试图让第一个和第三个按钮占据标签栏的其余空间,并让第二个按钮的宽度不变。我正在接近,但我似乎无法完全理解。这是我第一次以编程方式添加约束,所以我欢迎建设性的批评。这是代码。在图像上,每种颜色都是一个按钮。在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];
}
这里是什么样子
答
我缺少约束。我试图使用一个不同的,它不工作,但这一个。
NSArray *firstAndThirdButtonConstraint = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[firstButton(==thirdButton)]"
options:0
metrics:nil views:viewDictionary];