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 или добавить ограничения?

Ответы на вопрос(2)

ельский вид не работает на кране. Просто хотел поделиться тем, что я должен был сделать, чтобы пользовательский вид в элементе навигации работал. Это все быстро 3

let backButtonView = BackButtonView.loadNib()
backButtonView?.addTarget(self, action: #selector(returnToPrevious), for: .touchUpInside)
backButtonView.widthAnchor.constraint(equalToConstant: backButtonView.frame.width).isActive = true
backButtonView.heightAnchor.constraint(equalToConstant: backButtonView.frame.height).isActive = true
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButtonView!)

2 строки о ширине / высоте якоря пришли из ответа Fallstreak и были решением в этом случае.

Решение Вопроса

вместо фреймов. Попробуйте это (Swift):

if #available(iOS 9.0, *) {
    cButton.widthAnchor.constraint(equalToConstant: customViewButton.width).isActive = true
    cButton.heightAnchor.constraint(equalToConstant: customViewButton.height).isActive = true
}

Цель С

if (@available(iOS 9, *)) {
     [cButton.widthAnchor constraintEqualToConstant: standardButtonSize.width].active = YES;
     [cButton.heightAnchor constraintEqualToConstant: standardButtonSize.height].active = YES;
}
 Bucket07 окт. 2017 г., 10:03
Большой! это сработало для меня. Thankx.
 JScarry20 сент. 2017 г., 16:34
Спасибо за подсказку. Я добавил версию Obj C.

Ваш ответ на вопрос