Odpowiedź na moje pytanie została zasugerowana w this question, więc myślę, że odpowiedź jest, aby wyłączyć autolayout dla mojego widoku UIToolbar.iOS 11 UIBarButtonItem images not sorting
Kod, który mówi do pracy dla poglądów jest
cButton.translatesAutoresizingMaskIntoConstraints = YES;
Ale nie jestem pewien, czy to dotyczy mojego kodu od UIToolbar nie dziedziczy z UIView.
Mam wiele małych obrazów, których używam w moich grach, które różnią się rozmiarami w zależności od urządzenia i orientacji. Zamiast wielu różnych obrazów i dodawania nowych, gdy Apple wprowadza nowe urządzenia, postanowiłem zrobić jeden obraz 160x160 przed każdym, a następnie zmienić jego rozmiar, gdy jest używany. To działało w porządku z iOS 4 - iOS 10, ale nie w iOS 11.
Kod jest dość prosta:
// 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];
To co wygląda pre11. Elementy paska przycisków zostały przeskalowane i ładnie pasują na dolnym pasku. Zauważ, że zmniejszyłem rozmiar znacznika wyboru o 50%, aby upewnić się, że patrzę na poprawny kod i że zachowuje się tak, jak się spodziewam.
Oto jak wyglądają w symulatorze dla Xcode 9.0 GM i iOS 11. Należy zauważyć, że górny rząd przycisków rozmiaru poprawnie ale dolny rząd rozwiń, aby wypełnić przestrzeń przeznaczoną na pasku kart. To samo zachowanie dzieje się na iPadach i różnych urządzeniach.
Wszelkie pomysły dotyczące sposobu wyłączania autoLayout lub dodać ograniczenia?
Dzięki za podpowiedź. Dodałem wersję Obj C. – JScarry
Świetnie! to zadziałało dla mnie. dziękuję. – Bucket