在代码中使用Autolayout时,大家都会使用NSDictionaryOfVariableBindings这个宏,这个宏可以生成一个变量名到变量值映射的Dictionary。比如NSDictionaryOfVariableBindings(button1, button2)将会生成一个{ @”button1” = button1, @”button2 = button2 }的Dictionary。
- (UIView *)createBottomView {
UIView *bottomView = [[UIView alloc] init];
[bottomView setTranslatesAutoresizingMaskIntoConstraints:NO];
//resetButton
UIButton *resetButton = [[UIButton alloc] init];
[resetButton setTranslatesAutoresizingMaskIntoConstraints:NO];
[resetButton addTarget:self action:@selector(clickResetButton:) forControlEvents:UIControlEventTouchUpInside];
[resetButton.titleLabel setFont:[UIFont systemFontOfSize:BOTTOM_BUTTON_FONT_SIZE]];
[resetButton setTitleColor:[UIColor hexColor:FILTER_BLACK_STRING] forState:UIControlStateNormal];
NSString *resetString = LocalString(@"sZYFilterReset");
if ([resetString isEqualToString:@"sZYFilterReset"]) {
resetString = @"Reset";
}
[resetButton setTitle:resetString forState:UIControlStateNormal];
[resetButton setBackgroundColor:[UIColor whiteColor]];
[bottomView addSubview:resetButton];
//commitButton
UIButton *commitButton = [[UIButton alloc] init];
[commitButton setTranslatesAutoresizingMaskIntoConstraints:NO];
[commitButton addTarget:self action:@selector(clickCommitButton:) forControlEvents:UIControlEventTouchUpInside];
[commitButton.titleLabel setFont:[UIFont systemFontOfSize:BOTTOM_BUTTON_FONT_SIZE]];
[commitButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
NSString *commitString = LocalString(@"sZYFilterCommit");
if ([commitString isEqualToString:@"sZYFilterCommit"]) {
commitString = @"Commit";
}
[commitButton setTitle:commitString forState:UIControlStateNormal];
[commitButton setBackgroundColor:[UIColor hexColor:FILTER_RED_STRING]];
[bottomView addSubview:commitButton];
//constraints
NSDictionary *views = NSDictionaryOfVariableBindings(resetButton, commitButton);
[bottomView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[resetButton][commitButton]|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]];
[bottomView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[resetButton]|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]];
[bottomView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[commitButton]|" options:NSLayoutFormatAlignAllCenterY metrics:nil views:views]];
[bottomView addConstraint:[NSLayoutConstraint constraintWithItem:resetButton attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:commitButton attribute:NSLayoutAttributeWidth multiplier:1.f constant:0.f]];
return bottomView;
}