UIScrollView Вращение - PullRequest
       19

UIScrollView Вращение

1 голос
/ 06 октября 2010

У меня есть прокрутка, которая автоматически генерирует серию подпредставлений, содержащих изображения.Концепция заключается в том, что это в значительной степени пользовательский читатель в стиле PDF, где каждая страница загружается в изображение в виде изображения.Есть три «слоя» - внешний UIScrollView, автоматически сгенерированные подвиды и вид изображения внутри подпредставления.

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

Я создал функцию setUpView, которая инициализирует все представления и изображения следующим образом:

- (void)setUpView {
    //INITIALISE PAGING SCROLL VIEW
    CGRect pagingScrollViewFrame = [[UIScreen mainScreen] bounds];
    pagingScrollViewFrame.origin.x -= 10;
    pagingScrollViewFrame.size.width += 20;
    pagingScrollView = [[UIScrollView alloc] initWithFrame:pagingScrollViewFrame];

    //CONFIGURE PAGING SCROLL VIEW  
    pagingScrollView.pagingEnabled = YES;
    pagingScrollView.backgroundColor = [UIColor blackColor];
    pagingScrollView.contentSize = CGSizeMake(pagingScrollViewFrame.size.width*7, pagingScrollViewFrame.size.height);

    //ACTIVATE PAGING SCROLL VIEW
    self.view = pagingScrollView;

    //ADD PAGES TO SCROLL VIEW
    for (int i = 0; i < 7; i++){
        ImageScrollView *page = [[[ImageScrollView alloc] init] autorelease];
        [self configurePage:page forIndex:i];
        [pagingScrollView addSubview:page];
    }
}

В моем методе loadView я просто вызываюэта функция.

Есть ли способ определить текущую ориентацию устройства, чтобы его можно было как-то подать в вышеуказанную функцию?В данный момент при повороте внешнее представление вращается нормально, но внутренние вспомогательные представления и просмотры изображений этого не делают.

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Вы можете создавать объекты без наблюдателя для уведомления UIDeviceOrientationDidChangeNotification, которое будет публиковаться при каждом изменении ориентации.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];

Затем, в вашем методе directionChanged: вы можете проверить текущую ориентацию и соответственно разметить свои виды.

Однако вы должны указать устройству генерировать такие уведомления, позвонив по номеру

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

Обязательно удалите объекты, которые наблюдают за изменением ориентации на dealloc!

Надеюсь, это было полезно, Павел

1 голос
/ 06 октября 2010

Вы можете получить ориентацию устройства, посмотрев на:

[UIDevice currentDevice].orientation

или вы можете использовать self.interfaceOrientation для viewController.

...