Размер UIScrollview при изменении ориентации - PullRequest
1 голос
/ 01 февраля 2012

кажется, что когда я меняю ориентацию своего телефона, когда я смотрю на изображение в режиме прокрутки, доза прокрутки не меняет ориентацию с телефоном.

Мне интересно, может ли кто-нибудь объяснить мне, какчтобы выполнить это.

это настройки в моем конструкторе интерфейсов

enter image description here

Я только что провел некоторое исследование и теперь у меня работает первый выбор, но еслия пробую другую картину, это не работает .. и я не уверен почему .. вот мой код

это то, что сделало его полуработой

scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 


- (void)loadImage:(NSString *)myImageName
{
//    //Create scrollview

    scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
    scrollView.delegate = self;

    //Create scrollviewimage
    if ([myImageName isEqualToString:@"one"]) {
        image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hyundai.png"]];
        containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 350, 550)];
        NSLog(@"1");
    }
    if ([myImageName isEqualToString:@"two"]) {
        image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"keso.png"]];
        containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 600, 520)];
        NSLog(@"2");
    }
    if ([myImageName isEqualToString:@"three"]) {
        image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"conforti.png"]];
        containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 600, 700)];
        NSLog(@"3");
    }

    //Add subview
    [containerView addSubview:image];
    //initViews
//    scrollView.contentSize = containerView.frame.size;
    [scrollView addSubview:containerView];

    //scrolling
    scrollView.minimumZoomScale = 1.0;
    scrollView.maximumZoomScale = 31.0;
    scrollView.BackgroundColor = UIColor.whiteColor;
    [scrollView setZoomScale:scrollView.minimumZoomScale];

    //highrachy
    [self.view addSubview:scrollView];
    scrollView = nil;
}

РЕДАКТИРОВАТЬ: ответ на @DJ

это вывод

2012-02-01 13:30:35.683 Diagram Test[1672:707] The view controller <UINavigationController: 0x14cdd0> returned NO from -shouldAutorotateToInterfaceOrientation: for all interface orientations. It should support at least one orientation.
2012-02-01 13:30:44.182 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:47.097 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:47.158 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:51.509 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:51.555 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:55.473 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:55.519 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:59.293 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:30:59.352 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:31:02.237 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:31:02.281 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:31:03.814 Diagram Test[1672:707] height = (null)i, width = (null)i
2012-02-01 13:31:03.858 Diagram Test[1672:707] height = (null)i, width = (null)i

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Вращение вида прокрутки изменяет размеры границ, но не contentSize, на который не влияет автоматическое изменение размера.

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

Например, если вы прокручиваете список изображений, вам также необходимо изменить положение прокрутки и, возможно, изменить настройку масштабирования, чтобы она соответствовала новым значениям ширины и высоты.

Если вы просто масштабируете одно изображение, задача будет немного проще, так как нужно настроить только масштаб, если он вообще есть.

Еще один совет: поиграйтесь с contentSize без поворота, чтобы вы могли видеть, как это влияет на прокрутку и видимую область.

0 голосов
/ 01 февраля 2012

У меня такое ощущение, что ничего не вращается ..

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
     NSLog(@"height = %i, width = %i",scrollviewname.bounds.size.height, scrollviewname.bounds.size.width);
     return true;
}

Я набрал этот код из памяти ... поэтому, если есть орфографическая ошибка, извините ... проверьте эти журналы, чтобы убедиться, что uiscrollview вращается первым.

0 голосов
/ 01 февраля 2012

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

Также обратите внимание на изменение scrollview.contentSize и scrollView.contentOffest в willRotateToInterfaceOrientation: метод, если вам нужно сохранить изображение по центру и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...