Ответ 1
- (void) viewWillLayoutSubviews {
// UIButton *button1, *button2, *button3, *button 4 ;
// NSMutableArray *constraintsForButtons ;
float unusedHorizontalSpace = self.view.bounds.size.width - button1.intrinsicContentSize.width - button2.intrinsicContentSize.width - button3.intrinsicContentSize.width - button4.intrinsicContentSize.width ;
NSNumber* spaceBetweenEachButton= [NSNumber numberWithFloat: unusedHorizontalSpace / 5 ] ;
[self.view removeConstraints:constraintsForButtons] ;
[constraintsForButtons removeAllObjects] ;
[constraintsForButtons addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"H:|-(space)-[button1]-(space)-[button2]-(space)-[button3]-(space)-[button4]-(space)-|"
options: NSLayoutFormatAlignAllCenterY
metrics: @{@"space":spaceBetweenEachButton}
views: NSDictionaryOfVariableBindings(button1,button2,button3,button4) ] ] ;
[constraintsForButtons addObjectsFromArray: [NSLayoutConstraint constraintsWithVisualFormat: @"V:|[button1]"
options: 0
metrics: nil
views: NSDictionaryOfVariableBindings(button1) ] ] ;
[self.view addConstraints:constraintsForButtons] ;
}
Это не так красиво, как у вас, и предполагается, что есть 4 кнопки, но это равномерно их. То есть пустые пространства между кнопками имеют одинаковую ширину. Это не означает, что расстояние между NSLayoutAttributeLeading кнопки 1 и кнопки 2 совпадает с расстоянием между кнопками 2 и button3.