Как настроить частичную скручиваемость, не скрывая панель инструментов? - PullRequest
2 голосов
/ 30 марта 2012

В приложении Google Maps на iPhone панель инструментов в нижней части все еще видна после того, как модал с частичным переходом скручивания предварительно сформирован. Когда я настраиваю модальный эффект в моей раскадровке с частичным скручиванием, новый контроллер представления скрывает панель инструментов от представления паранта.

Как настроить частичное скручивание, как в приложении Google Maps?

Google Maps on iPhone Modal in Storyboard

Ответы [ 2 ]

3 голосов
/ 13 июля 2012

Попробуйте этот код. Это будет вам полезно. ПОЖАЛУЙСТА, НЕ СТЕСНЯЙТЕСЬ, ЧТОБЫ ПОПРОБОВАТЬ ЭТОТ КОД Вам нужно будет импортировать QuartzCore.framework.

locationMapView это ваш MKMapView, а curlView ваш второй UIView

- (IBAction)curlButtonPressed:(id)sender {

    if (isCurlStarted == NO) {
        [UIView animateWithDuration:1.0 
                         animations:^{
                             CATransition *animation = [CATransition animation];
                             [animation setDelegate:self];
                             [animation setDuration:0.7];
                             [animation setTimingFunction:[CAMediaTimingFunction functionWithName:@"default"]];
                             animation.type = @"pageCurl";
                             animation.fillMode = kCAFillModeForwards;
                             animation.endProgress = 0.65;
                             [animation setRemovedOnCompletion:NO];
                             [locationMapView.layer addAnimation:animation forKey:@"pageCurlAnimation"];  
                             [locationMapView addSubview:curlView];
                             ;}  
         ];            
        isCurlStarted = YES;
    }else{
        [self curlDownPressed:curlDownButton];
    }

}

- (IBAction)curlDownPressed:(id)sender {
    [UIView animateWithDuration:1.0 
                     animations:^{
                         CATransition *animation = [CATransition animation];
                         [animation setDelegate:self];
                         [animation setDuration:0.7];
                         [animation setTimingFunction:[CAMediaTimingFunction functionWithName:@"default"]];
                         animation.type = @"pageUnCurl";
                         animation.fillMode = kCAFillModeForwards;
                         animation.startProgress = 0.35;
                         [animation setRemovedOnCompletion:NO];
                         [locationMapView.layer addAnimation:animation forKey:@"pageUnCurlAnimation"];  
                         [curlView removeFromSuperview];

                         ;}  
     ];
    isCurlStarted = NO;
}
2 голосов
/ 30 марта 2012

Для этого вам, вероятно, понадобится OpenGL ES. Базовая анимация предоставляет возможность работать со слоями даже в 3-D , но все слои являются просто прямоугольниками, и ими манипулируют как таковыми. Вы можете анимировать переворачивание слоя вокруг оси, даже с искажением перспективы , но вид искривления, который вы хотите сделать, является более сложным, чем вы можете управлять с помощью Core Animation API-интерфейсы.

Возможно, вы сможете разделить ваше изображение на сетку из крошечных слоев и манипулировать каждым из них, используя CATransform3D для создания этого эффекта изгиба, но в этот момент вы также можете использовать OpenGL ES для создания того же эффекта.

...