Я писал простой пользовательский View Controller в ios5 с UIScrollView и встроенным UIImageView, с целью отображения фотографий и возможности масштабирования и панорамирования.
Все они встроены в UINavigationController и TabBarViewController
Вот фрагменты моего кода:
- (void)viewDidLoad
{
[super viewDidLoad];
self.scrollView.delegate = self;
self.imageView.image = self.image;
[self.imageView sizeToFit];
self.scrollView.zoomScale = 1;
self.scrollView.contentSize = self.imageView.image.size;
NSLog(@"Original contentSize=(%f,%f), ratio=%f", self.scrollView.contentSize.width, self.scrollView.contentSize.height, self.scrollView.contentSize.height/self.scrollView.contentSize.width);
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.imageView;
}
- (void) scrollViewDidZoom:(UIScrollView *)scrollView
{
NSLog(@"Changed contentSize=(%f,%f), ratio=%f", self.scrollView.contentSize.width, self.scrollView.contentSize.height, self.scrollView.contentSize.height/self.scrollView.contentSize.width);
}
Я также по умолчанию установил режим View-> Mode в инспекторе атрибутов на «Top Left» для UIScrollView и UIImageView. Зум мин / макс был установлен на 0,1 / 10. Делегаты и торговые точки подключены.
Теперь, когда я запускаю свою программу, это то, что я получаю, когда я масштабирую изображение на пинч:
2012-01-08 19: 58: 33.529 TestApp [499: f803] Исходный размер содержимого = (1024,000000,1024,000000), соотношение = 1,000000
2012-01-08 19: 58: 37.599 TestApp [499: f803] Изменен contentSize = (1014.381775,922.255310), коэффициент = 0,909180
2012-01-08 19: 58: 37.600 TestApp [499: f803] Изменен contentSize = (1014.381775,922.255310), коэффициент = 0,909180
2012-01-08 19: 58: 37.730 TestApp [499: f803] Изменен contentSize = (1004.763977,913.510986), коэффициент = 0,909180
2012-01-08 19: 58: 41.432 TestApp [499: f803] Изменен contentSize = (974,770325,886.241394), коэффициент = 0,909180
2012-01-08 19: 58: 41.433 TestApp [499: f803] Изменен contentSize = (974,770325,886.241394), коэффициент = 0,909180
2012-01-08 19: 58: 41.448 TestApp [499: f803] Изменен contentSize = (954.777161,868.064026), коэффициент = 0,909180
Как видите, соотношение высоты и ширины contentSize изменяется при увеличении масштаба. Кто-нибудь знает, почему это так? Я что-то здесь не так делаю? Нужно ли вручную устанавливать contentSize в scrollViewDidZoom?