Я реализовал контроллер вида, который просто отображает одно изображение и позволяет пользователю зажимать, чтобы увеличить/панорамировать изображение. Он отлично работает на iOS 7, но на iOS 8 кадр представления прокрутки отличается по размеру, и конечным результатом является то, что изображение сильно зашифровано на iPhone и слишком сильно уменьшилось на iPad при работе на iOS 8. Это связано с тем, что ширина рамки прокрутки составляет 600pt, что является ее размером в раскадровке (Universal Storyboard с использованием классов размера). Но у меня есть ограничения автоопределения, которые должны обеспечивать растяжение прокрутки, чтобы заполнить доступное пространство - на iPad должно быть 768pt. Именно так обстоит дело с прошивкой 7, но не IOS 8.Кадр UIScrollView отличается от iOS 8 и iOS 7
Это настройка: В Interface Builder, у меня есть UIViewController
, который содержит UIView
, содержащее уникальную UIScrollView
с autolayout контрсилами задней, ведущей, снизу и сверху пространство надзор. Тогда в viewDidLoad
:
UIImage *image = [UIImage imageNamed:@"image"];
self.imageView = [[UIImageView alloc] initWithImage:image];
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
self.imageView.frame = CGRectMake(0, 0, self.imageView.image.size.width, self.imageView.image.size.height);
[self.scrollView addSubview:self.imageView];
self.scrollView.contentSize = image.size;
#warning Bug here - scroll view frame is 600pt on iOS 8 - should be 768 for iPad
NSLog(@"scroll view frame wid: %f", self.scrollView.frame.size.width);
я обнаружил, если я ставлю тот же NSLog
в viewDidAppear
ширина фрейма правильно 768pt. Я попытался переместить этот код в viewWillAppear
вместо viewDidLoad
, но я получаю тот же результат - это 600 в viewWillAppear
. Таким образом, просмотр прокрутки должным образом растягивается, чтобы заполнить дисплей, но только после того, как он появится на экране. Мне нужен правильный размер кадра, прежде чем изображение появится на экране, чтобы я мог рассчитать правильные минимальные и максимальные значения масштабирования.
Что я могу сделать, чтобы исправить это и обеспечить его работу для iOS 7 и 8?
Когда вы говорите «600pt, что его размер в раскадровке», вы имеете в виду постоянное ограничение размера, или временный «Заполнитель» самоценность размер? –
@IanMacDonald При использовании универсальной раскадровки размер по умолчанию для сцены равен 600. Так как вид прокрутки растягивается, чтобы заполнить ширину/высоту с помощью автозапуска, по умолчанию также 600, но он должен растягиваться, чтобы заполнить весь размер представления. – Joey
Да, я понимаю, что размер по умолчанию - 600. Мне было любопытно, будет ли ваше представление прокрутки сообщать о его 600 в любом из этих двух полей, о которых я упоминаю, или если это было только в вычисленном поле кадра. Имеет ли вид прокрутки супервизор, который не растягивается? –