Я знаю, что этот вопрос немного старый, но я программировал в прошивке в течение нескольких лет и не люблю, используя autolayout. Поэтому я написал вспомогательный метод для равномерного пространства UIButtons по горизонтали и центрирования по вертикали внутри UIView. Это отлично работает для меню.
- (void) evenlySpaceTheseButtonsInThisView : (NSArray *) buttonArray : (UIView *) thisView {
int widthOfAllButtons = 0;
for (int i = 0; i < buttonArray.count; i++) {
UIButton *thisButton = [buttonArray objectAtIndex:i];
[thisButton setCenter:CGPointMake(0, thisView.frame.size.height/2.0)];
widthOfAllButtons = widthOfAllButtons + thisButton.frame.size.width;
}
int spaceBetweenButtons = (thisView.frame.size.width - widthOfAllButtons)/(buttonArray.count + 1);
UIButton *lastButton = nil;
for (int i = 0; i < buttonArray.count; i++) {
UIButton *thisButton = [buttonArray objectAtIndex:i];
if (lastButton == nil) {
[thisButton setFrame:CGRectMake(spaceBetweenButtons, thisButton.frame.origin.y, thisButton.frame.size.width, thisButton.frame.size.height)];
} else {
[thisButton setFrame:CGRectMake(spaceBetweenButtons + lastButton.frame.origin.x + lastButton.frame.size.width, thisButton.frame.origin.y, thisButton.frame.size.width, thisButton.frame.size.height)];
}
lastButton = thisButton;
}
}
Просто скопируйте и вставьте этот метод в любой контроллер вида.Затем к нему доступ, я сначала создал все кнопки, которые я хотел, потом вызвал метод со всеми кнопками в массиве, вместе с UIView Я хотел его.
[self evenlySpaceTheseButtonsInThisView:@[menuButton, hierarchyMenuButton, downButton, upButton] :menuView];
Преимущество этого метода состоит в том, что вам не нужно автозапуск, и это очень просто реализовать. Недостаток заключается в том, что если ваше приложение работает в условиях ландшафта и портрета, вам нужно будет снова вызвать этот метод после поворота представления.
Ваше решение не является самым простым способом, а если добавить или удалить кнопки, вы должны рассчитать множители снова. См. Мой ответ для правильного способа сделать это. Также мое решение удовлетворяет вашему другому требованию, что вы не хотите вставлять свои кнопки в виде. – bandejapaisa