UIScrollView со встроенным UIImageView: соотношение высоты и ширины contentSize изменяется при увеличении / уменьшении - PullRequest
1 голос
/ 09 января 2012

Я писал простой пользовательский 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?

1 Ответ

1 голос
/ 16 января 2012

Как упомянуто в моем комментарии, я исправил это, установив frame.size scrollView в (320,367).Это было неправильно установлено раскадровкой.

...