2 строки о ширине / высоте якоря пришли из ответа Fallstreak и были решением в этом случае.
на мой вопрос был намекнут вэтот вопрос, поэтому я думаю, что ответ должен отключить автопоставку для моего представления UIToolbar.
Код, который, как говорят, работает для представлений,
cButton.translatesAutoresizingMaskIntoConstraints = YES;
Но я не уверен, применимо ли это к моему коду, поскольку UIToolbar не наследуется от UIView.
У меня есть много маленьких изображений, которые я использую в своих играх, которые имеют разные размеры в зависимости от устройства и ориентации. Вместо того, чтобы иметь много разных изображений и добавлять новые, когда Apple представляет новые устройства, я решил создать по одному изображению размером 160x160 для каждого, а затем изменить его размер при использовании. Это работало нормально с iOS 4 - iOS 10, но не работает в iOS 11.
Код довольно прост:
// Get the image
NSString *pictFile = [[NSBundle mainBundle] pathForResource:@"Correct" ofType:@"png"];
UIImage *imageToDisplay = [UIImage imageWithContentsOfFile:pictFile];
UIImage *cImage = [UIImage imageWithCGImage:imageToDisplay.CGImage scale:[UIScreen mainScreen].scale orientation:imageToDisplay.imageOrientation];
UIButton *cButton = [UIButton buttonWithType:UIButtonTypeCustom];
[cButton setImage:cImage forState:UIControlStateNormal];
[cButton setTitle:@"c" forState:UIControlStateNormal];
//set the frame of the button to the size of the image
cButton.frame = CGRectMake(0, 0, standardButtonSize.width, standardButtonSize.height);
//create a UIBarButtonItem with the button as a custom view
c = [[UIBarButtonItem alloc] initWithCustomView:cButton];
Вот как это выглядит до 11. Размеры кнопок панели были изменены и хорошо вписались в нижнюю панель. Обратите внимание, что я уменьшил размер галочки на 50%, просто чтобы убедиться, что я смотрю на правильный код и он ведет себя так, как я ожидал.
Вот как они выглядят в симуляторе для Xcode 9.0 GM и iOS 11. Обратите внимание, что верхний ряд кнопок изменяет размер правильно, но нижний ряд расширяется, чтобы заполнить пространство, выделенное для панели вкладок. То же самое происходит и на iPad, и на разных устройствах.
Любые идеи о том, как отключить Autolayout или добавить ограничения?